I recently had a client contact me asking for an update to his project that I used to maintain/develop years ago.
It was done using Macromedia Director (now Adobe Director) and Lingo. Since I haven't developed anything using these technology in such a long time I need some assistance.
The majority of the changes are simple, but what has got me stumped is making the application be able to toggle between full-screen projector and windowed-mode.
This is how it is organised:
("@::Content:Main")
Now, I can create a projector that is windowed and one that is full-screen mode by publishing separate executables. However what the client wants is the ability to switch this at runtime - is this even possible?
I have found a few workarounds that kinda work (setting the display-rect and stage-rect to the desktop size) but introduce numerous compatibility issues.
Any advice? Solutions?
I am tempted to say that it isn't possible to switch at runtime and recommend that he publishes either a full-screen or a windowed version.
For future reference: http://www.directorforum.com/showthread.php?p=38795#post38795
Well there are different ways to define "full screen", but all can be done at runtime:
1) The projector automatically adjusts the computer's display resolution to match the dimensions of the movie and hides the taskbar/dock. This is generally what "full screen" means in modern parlance. You can check out various Xtras for switching the resolution on the fly.
2) In Director terms, publishing a projector 'full screen' just means that the projector window has no titlebar, takes up the full dimensions of the display, hides the taskbar/dock, and has the movie content centered on screen framed by a solid background color. This is a pretty lame implementation of full screen since it doesn't make the movie appear any bigger onscreen. This can be set at runtime by manipulating the rects that you mention and using an Xtra to hide the taskbar. Not sure what "compatibility issues" you ran into.
3) Graphically stretch the movie so that its actual content takes up the entire screen. The easiest way to do this is by altering the drawRect. But this can result in distorted graphics depending on how much stretching is occurring, since no antialiasing is used to smooth the stretched pixels.