Screentime mProjector 4 for Mac and Windows
Flash application builder packs in all the bells and whistles
Flash wrappers, as I tend to call the genre of software Screentime's mProjector belongs to, have been around almost as long as Flash itself. Whatever the reason for their rise (the decline of Director, needing offline access to online content, etc.), there are still several options out there for turning your Flash content into desktop applications. And while Adobe's own AIR technology seems to get all the press, there is no reason why mProjector shouldn't be considered one of the top dogs in cross-platform Flash desktop app creation.
I've had a chance to work with several Flash wrappers over the years, and they've generally come in very handy. As I mentioned, there are still several choices in that space, even after Adobe entered the fray with AIR, because when all is said and done AIR is a framework which requires a 20+ MB download and the Flash Player to be previously installed before your apps can be distributed. Flash wrappers can create completely self-contained Flash-based apps (the good ones, anyway), requiring no resident player or frameworks to be present. They can be downloadable or packaged up for distribution on physical media. In short, there are good reasons why several choices still exist. In any event, it's mProjector's turn under the microscope, and in order to speed things along, let's see how well it answers several questions:
- Is it cross-platform?
- How well does it extend the platforms it runs on?
- What is the development environment like?
- Does it create truly self-contained executables?
- What kind of performance can you expect?
- Is it worth buying?
What a convenient list. In fact, I'll just go through these in order to make things easier on everyone. Let's proceed, shall we?
1) Is it cross-platform?
As the title of this piece may have suggested, the answer is yes. mProjector 4 creates executables which run on Windows 2000 or later and Mac OS X 10.4 or later. (The latest and greatest -- Windows 7 and OS X 10.6 "Snow Leopard" -- are definitely included in the "or later" portion of the previous sentence.) However, it's worth noting here that you need to purchase a version of mProjector for the platform you are targeting. If you are targeting Windows, you have to buy the Windows version. If you are targeting Macs, you have to buy the Mac version. You need to purchase both if you want to produce cross-platform executables, or in other words, you make Windows projectors from Windows and Mac programs from the Mac -- you can't build Windows projectors from the Mac (or vice-versa), though mProjector's native .mproj files can be read from either program. The pricing model reflects this: individual platform versions are $249, and buying both will set you back $399 (a cool Benjamin off of buying both separately).
However, on the authoring side, you don't have to have cross-platform versions of Flash or Flex just to get things done. Now, I'm not a Flex developer (Flash Pro all the way), so this particular point and all development-related comments henceforth will be from that perspective. We'll get more into the nuts and bolts of the overall environment a couple of questions down, but suffice it to say for right now that the mProjector Flash component takes care of a great many things, including access to the full set of mProjector classes for either platform. So, for example, you can write all the code needed to have mProjector interact with the Windows registry from your Mac version of Flash, and mProjector won't bat an eye (fig. 1). You'll still need to build the final executable via the Windows version, but you don't need to write the code on the OS you're targeting. Testing becomes an issue if you're doing things this way, but more on that later.

Figure 1
2) How well does it extend the platforms it runs on?
The word I'd use to describe mProjector's OS integration is "pretty darned comprehensive." OK, so that's three words, but you get my point. Plus, for the most part, what is available on Windows is also available on the Mac, which was not the case in other Flash wrapper programs I've tried in the past. Of course, there are certain methods like showOnTaskBar and setDockIconBadge which only make sense on Windows and Mac, respectively, but the vast majority of mProjector's functionality works on both. I know, I know... I already answered the cross-platform question, so let's get to a few examples of the things you can do with mProjector. First and foremost, you have the packaging of your SWFs, which the standalone mProjector application is for (fig. 2).

Figure 2: Mac on left, Win on right, SWF at the gooey center of each.
The folks at Screentime boast that the main mProjector application is itself created using mProjector, which is the very definition of "eating your own dog food." That fun fact aside, the mProjector app lets you choose your main SWF, application icon, whether to include the Flash Player, additional files to bundle into the app, application window options, etc. Of note here is the fact that you can publish to what mProjector calls "Flash-shaped" (or windowless) mode, meaning all the usual OS window chrome is eschewed in favor of the shape of whatever is on your movie's stage (including drop shadows and blurs, as shown in Figure 3). Combine this with the ability to hide the menubar and Dock icons on the Mac and the taskbar entry on Windows, and mProjector can be used to create true-cross platform widget apps.

Figure 3: mProjector does a nice compositing job on both platforms with Flash's native filters in windowless mode.
The second half of the mProjector equation is how it hooks into Flash, or in more precise terms, the custom classes mProjector provides for ActionScript. I'm really only going to be able to gloss over the sheer volume of features in this department, but let's go class by class and pick out some highlights:
mSystem. This class, like the others, is aptly named, as it allows you to interact with various elements of the host system. Determining a username, finding a special folder (such as the Home folder on the Mac or the Start menu location on Windows), getting/setting clipboard contents and more are possible with the mSystem class.
mApplication. Since mProjector creates applications, having a class to manage your app would make sense. Methods of note here are downloadFile, which can grab files from a remote server, and checkNetConnection, which, unsurprisingly, can determine whether the host OS can connect to the internet.
mFile. This class puts forth the handlers and methods involved in manipulating files and folders on your system. Fairly self explanatory, but the listFiles method is particularly useful.
mWindow. One of mProjector's featured, well, features is the ability to spawn and asynchronously communicate with multiple windows, so it would make sense to have a mWindow class to help you manage things. You can set window titles, maximize and minimize, change the layering order, and so on.
mFTP. GETs or PUTs files from/to a FTP server. This class consists of a whopping two methods (one for uploading and one for downloading), both of which are handy, but I don't think you'll be writing entire FTP clients with Flash and mProjector.
mMenu. Using this class, you can add application menus to your Flash-based apps. On the Mac, yes, this does mean adding items to the main menu at the top of the application window (fig. 4).

Figure 4
mRegistry. A Windows-only class which interacts with the Registry. Not my particular cup of tea, but it is for some, so I'll just leave it at that.
That's the rundown. You can certainly look over the documentation yourself if you like; this page at the Screentime web site gives you all the gory details. The last thing I'll mention before moving on might be of utmost importance to some: mProjector classes can be accessed using ActionScript 2 or 3. That's potentially huge if you have legacy content you'd like to re-purpose, or even if you just haven't gotten around to learning AS3 yet, as may be the situation for some of the designers out there. While I'm unlikely to ever write a mProjector app in AS2, its inclusion (or continuation, as the case may be) in the API is a check in the "good" column. In true Rosenhausian fashion, next question.
3) What is the development environment like?
Again, Flash Pro guy here, so apologies in advance for deliberately ignoring Flex. As I alluded to earlier, for Flash Pro, The main element of mProjector is a component (installed through the Adobe Extension Manager) which must be present in your document in order for the wrapper part of mProjector to have something to talk to (fig. 5).

Figure 5: That innocuous-looking red sphere is your confirmation that the mProjector component has been added to the project and is ready to direct traffic.
Once the component is installed, a couple of things happen: one, the mProjector classes we discussed earlier are recognized and auto-completed in the Actions panel, just like Flash's native classes (fig. 6).

Figure 6
Second, several commands are added (fig. 7) which help make the testing process a little smoother. You can locate and launch the mProjector app, select a .mproj file (set up beforehand) to associate with your source FLA file, and finally, use the workhorse Compile and Run command to have the SWF published and the the projector built and run.

Figure 7
As for debugging your app, it can become slightly convoluted, as there is simply no way to have mProjector traces appear in Flash's Output panel as you author your project. For most functions, you have to Compile and Run your projector and check the traces in a separate program. On Windows, Screentime has included an extra application for this purpose called Tracer (fig. 8, top). On the Mac, mProjector routes traces to the Console, where they appear inline with everything else your system is up to (fig. 8, bottom). The process of building your app every time you need to check any sort of output can become tedious, but the workflow from Flash to mProjector makes the experience much, much nicer than I imagine the alternative would be. I can't complain too much -- the mProjector component and commands is a pretty sweet solution, and is nicely executed (with both the Mac and Windows versions of Flash behaving identically in this regard, I might add).

Figure 8
4) Does it create truly self-contained executables?
The short version: yes. The longer version: mProjector can package a version of the Flash Player into the final projector, meaning that the target machine doesn't have to have Flash already installed as a requirement to use your Flash-based application. (Once again, this is much different than Adobe AIR, which dictates the latest Flash Player and the AIR framework be present on the host system.) You can also choose to leave out the Flash Player when you build your final projector, relying instead on the host OS having the player already present if you want to trade true standalone behavior for reduced application file size.
5) What kind of performance can you expect?
It's been my experience over the years that Flash wrappers tend to incur a moderate to severe performance penalty as the cost of doing business, so I was especially curious to see whether mProjector 4 continues that not-so-grand tradition. The answer isn't quite so cut-and-dried, but for the most part, it's a non-issue. While I'm unsure how sound the methodology I used is, it nonetheless gave me a decent idea of what's going on behind the scenes. I took a gradient symbol and made an oscillating animation using the excellent Tweener class, and combined with this open source Stats class, I was able to compare the runtime frame rate of the sample movie running in the native Flash Player program with the same movie compiled into a mProjector application. The movie's frame rate was targeted at maximum (120 fps) in each case. Here's what I found:
| OS | FPS (Flash Player) | FPS (mProjector) |
|---|---|---|
| Mac OS X 10.6.2 | 60 | 120 |
| Windows XP (virtualized) | 120 | 100 |
| Windows 7 (native install) | 100 | 60 |
I'm not going to pretend that there aren't endless variables which could change these results, but what I did get was interesting. mProjector actually improved the frame rate on the Mac, Windows XP -- even under virtualization -- did well in both players, while Windows 7 saw the most dramatic drop. The takeaway from this exercise is that unlike what I experienced with other Flash wrappers in the past, I can't automatically assume horrid performance. Testing is still required (and really, when is it not), but I'm not going to go into a project terribly worried about how the final projector will do when it's out in the wild.
6) Is it worth buying?
In a nutshell, I think mProjector 4 is fantastic, and heck yeah, it's worth buying. Synchronous calls, true standalone apps, a highly cross-platform API, and really nice integration with the Flash Pro environment are major selling points. I do have a few nits, which I'll call out now via one of my world-famous bullet lists:
- I really wish there was some way (any way) to trace mProjector output in the Flash environment at author time.
- One of the more intriguing methods, embedMediaWindow (which allows you to embed a browser instance or a PDF in your movies), crashes OS X projectors, and HARD. As in, won't run at all.
- I would like to see a separate mProjector log on Mac OS X, as picking mProjector traces out of the overall system log can be a tedious exercise. The Console filter helps (which is why Figure 8 isn't an indecipherable mess), but an individual log would be more convenient.
- I'd love to see an easier way to determine storage volume information (hard disks, USB keys, optical media, etc.).
- Finally, I'm a tad worried about Windows 7 playback performance. Just a tad.
The embedMediaWindow on Mac and the Windows 7 playback problems I would hope to addressed in upcoming point releases, but on balance, that's a pretty mild list.
Overall, mProjector 4 is a really exciting product which I'm looking forward to working with more, and as such earns an enthusiastic Strong Buy rating. As I mentioned earlier, individual OS licenses are $249 each, while $399 gets you both the Mac and Windows versions. A free, downloadable, fully-featured trial version is also available, and really, what better way is there to see if mProjector suits your needs than by trying it out for yourself? Check out the Screentime web site for more details.
Got Feedback? to send an email. I'll do my best to answer. Really.
