First of all, I think you probably mean roScreen - roImageCanvas isn't really very good at sliding things. Second, if you want to slide things around while still allowing the user to navigate, you need to switch from using:
msg=wait(0,port)
to something more like:
msg=port.getmessage()
That way, you can continue to update the screen while listening for roUniversalControlEvent and other event types. Pseudocode:
while true
'get message from port
'if user input then act on message, calculate new screen positions
'if download of graphics complete, update graphic image
'unload offscreen graphics
'request download of any graphics that are about to come onto the screen
'update screen positions of graphics
'update screen [i.e: screen.swapbuffers()]
end while
None of these should be written so as to block user interaction, so that means for downloading images, either use roTextureManager or use async roURLTransfer with the unique ID property so you can track which downloads to tmp:/ apply to which images on screen.
- Joel