April 21st 2005 | Jens C Brynildsen
Multidmedia has the most advanced tool on the market. Not only can they do more than any competitor (650+ commands), but they also support Mac and Pocket PC export. If you are looking for a program that can almost do everything, Zinc could be your choice.
The sheer number of features available in Multidmedia's Zinc is amazing. Just looking at the ftp options alone makes you want to build your own FTP program as there are 54 commands related to FTP alone. Not only that; it also has a built-in http server for http remote control of your Projector! Zinc even has a built-in CD/DVD recording tool that not only records the file(s), but even creates the autostart files. In it self, creating the autorun.inf file is not difficult, but it's a nice touch that shows the completeness of Zinc.
Multidmedia has been in the business for a long time and they have snappy email support and a lot of information online. The software was formerly called Flash Studio Pro, but changed name to Zinc recently. MDM also makes other software to extend Flash, such as Glow and Capture.
Support
MDM offers email, phone and a discussion forum for support. Email support is snappy. This is not only our experience, but we've also heard this from others. They also listened to what Flashmagazine missed. When Flashmagazine started this review, we asked the software providers to list certain features of their product. One of these features was System Events that trigger things upon something happening in the application. If the user changes the screen resolution, the software would execute an onScreenChange-handler (if existing). This allows the application to adjust to the increased/reduced screen estate.
Zinc did not have any of these events when we started this review, but once we explained how they worked, MDM implemented more than 50 of them in the next builds. That's pretty fast and it also makes them look better in the comparison chart. This is maybe not the same as listening to users, but still a sign that they are willing to listen to good ideas.
Updates to the latest version are free to registered users and the Zinc application will notify you when a new version is available. This makes it easy to stay up to date.
Ease of use
Help files are online as HTML, downloadable PDF and standard Windows Help files. The Windows help files are ok to use, but we miss the in-product help offered by other programs. The online version needs some trimming to be useful. When clicking the items in the tree-view of the online help files, they do not expand dynamically but rather reload. This causes a lot of bothersome scrolling to get to the last commands in the Command Dictionary. There's obviously some room for improvement here, but the help files are rather good and provide what you need.

The process is straightforward. You create your SWF and then open it in the Zinc application where you have a wealth of settings. This is the classical way of doing this, but in Zinc there's so many settings that you can almost get lost. Our favourite among the settings are the Splash screens with custom transitions based on a grayscale bitmap. Really nifty! Zinc comes with a lot of presets to ease the setup of your projector. Once you're done configuring, you hit the build-button to create the application.

The first version of Zinc (called Flash Studio Pro) used the dreaded FSCommands to do its magic. When version 2 was launched, the FSCommands were still there, but after user requests; MDM added what they call mdm-script. This provided a much more user friendly way of creating applications. Zinc is an application with a history and several features have been added as an afterthought. Due to this, there are some inconsistencies in how things work. To get the startup folder, you'd use this FSCommand:
fscommand("mdm.getstartup", "startupfolder");
With mdm-script, this was improved to this syntax:
mdm.getstartup("startupfolder");
According to the documentation, the command "Returns the system Startup Folder to the variable startupfolder". It does not return a variable, but rather fills one without any possibility to control the scope. This isn't exactly how Actionscript and other modern programming languages work. You'd expect something like this:
_parent.startupfolder = mdm.getstartup();
That way, you can freely control the scope of the returned variable. MDM are working to remedy this and bring synchonus commands to Zinc within a month or two. There are some odd things with mdm-script that will be fixed with this update.
While not the smoothest coding experience, few other tools have the feature set of Zinc Let's say you've made a Mac and PC application using Zinc that offers a 30 day trial, just like with Macromedia software. Once the trial version of the software expires (Zinc has special commands for making trial versions), you need a way for users to pay for the full application. Using Zinc, you can just open a custom browser window with the URL to your payment system as an integrated part of your application. You could of course just open a plain vanilla browser window and display the payment URL there, but with Zinc, you can easily integrate this in a professional looking way. Turn off address fields and any disturbing components of the browser and once the payment is successful, you can turn it into a fully working version. Zinc can also control the display of Windows Media Files, PDF, ShockWave and even hardware such as COM ports.
Platform Support (PC, MAC, PocketPC and soon also Linux)
MDM has the record for business "firsts". They were the first to offer Mac output, PocketPC output and more. Now they have their eyes set on the Linux market. "The Linux version will be a plug-in similar to the OSX plug-in - at the moment we're looking at the essential command sets of File loading/saving, generic dialogs (prompt, browse) etc with more complex functionality for the future. We dont expect to have the linux plug-in available until mid 2005 at the earliest.", says Jaspal Sohal, MD of Multidmedia.

Extensibility (COM, ActiveX, Plugins)
Zinc can load and use virtually any ActiveX control available on a users system, so if you need Excel or Word to be part of your application, that is possible. You can control size and position, plus set properties and run methods available in the DLL.
MDM has also made available the Zinc v2 Extension SDK for those that want to extend the product even further using DLLs. The SDK contains a guide and sample code for creating your own extensions in C++ or Delphi. Working with DLLs isn't exactly straightforward, but the SDK will be a valuable resource for capable coders.
Zinc can also be extended with extra commands found at the MDM File Exchange. Both users and MDM contributes to this section of the MDM site and you'll find a lot of useful files here.
File Opening Example
When performing our tests, we had some problems getting our file example to work. To open the files from the desktop folder, we used this command to get the location:
mdm.getdesktop("desktopfolder");
mdm.browsefiledir(desktopfolder);
This didn't work very well and the file was sent to MDM support. When we got it back, the command looked like this:
mdm.browsefiledir(mdm_desktop);
Upon startup, Zinc will store a lot of variables you may need while working. This is called Pre Processed System Variables. One such is the location of the desktop (mdm_desktop). Using these prevents some of the problems an asynchronous architecture gives. Our problem was that we expected the mdm.getdesktop command to return the variable at once. When we issued the mdm.browsefiledir command just after requesting the desktop location, the variable was undefined. Using Zinc, you'll have to wait for such commands to return a value before using it. A bit bothersome, but you can code around it.
It also seems you'll need to spend some time with this tool before you get to know how it works, since the obvious solutions will not always do the trick. Another thing we found odd using Zinc, was the complete lack of even a simple trace-command. Zinc has a debugger, but it will only display the results of the Zinc commands. It will also display all or nothing, so you'll be spending a lot of time trying to figure out what went wrong and where. You MAY use a standard Alert-command that will open a small dialogue, but that's hardly the same as tracing. The addition of a Trace-command would ease the development process a lot.

Here's the final file opening listing:
import mx.controls.TextArea;
import mx.controls.Button;
// Initialize the Zinc script engine
mdminit();
// GUI
var tArea:TextArea;
var tButt:Button;
// Setup text field for displaying the text
tArea = createClassObject(TextArea, "my_tf", 999, {html:true, border:true, _y:40});
tArea.setSize(300, 160);
// Make a Browse-button
tButt = createClassObject(Button, "my_tb", 998, {label:"Browse", _x:10, _y:10});
tButt.clickHandler = function() {
browseForFile();
}
// Functions used
function loadFile(filePath:String):Void
{
if (filePath.length>0) {
mdm.loadfromfile(filePath, myOnLoad);
}
}
function myOnLoad(txt:String):Void
{
txt = txt.split("r").join("");
tArea.text = txt;
}
function browseForFile():Void
{
mdm.browsefile_filtertext("Select Text file");
mdm.browsefile_filterlist("Text Files (*.txt)|*.txt");
mdm.browsefiledir(mdm_desktop);
mdm.browsefile(loadFile);
}
The button will call the browseForFile method. First we set a couple variables for the browsefile command. browsefile_filtertext sets the header for the dialogue and browsefile_filterlist filters the files listed. browsefiledir sets the initial directory and then the browsefile command opens the dialogue and is set up to open the loadFile method when the dialogue closes.
If a file is returned to loadFile, the loadfromfile command will read the contents and display it using the myOnLoad method. If you do not test for a result in the loadFile method, the projector will crash horribly if the user does not select a file. This has been fixed in the latest version of . If you have an older version, make sure you update to the latest version to avoid this. There are a few snags like this in other commands also, so make sure you test both likely and unlikely combinations before you start mass distribution of your projector.
Another important thing to note here; MDM script is not very code-efficient. This File-example uses four commands to resolve what other tools can do with just one command. Zinc has 650+ commands and many of them are really powerful, while some of them are like these. We have not tried to calculate how many commands are really just one function, but it hardly matters. Zinc can still control more than any competitor.
Full Application Example - Visual Caster
Visual Caster is a presentation creator. It allows users to create slides with timed objects using a timeline and share them across local networks in searchable libraries.
Image, video and audio libraries can be built, which are searchable by all users on the network for quick importing. Visual Caster automatically sorts and orders files needed for a presentation. Finished presentations can be uploaded by Visual Caster to the web with one click, exported to CDROM or compressed to a single file to be emailed and played through the VC Xpress player.
http://www.visualcaster.co.uk
If you end up buying Zinc, enter the promo code "flashmag" when paying to receive a 10% rebate and give a small kickback to Flashmagazine.
Visit MDM and read more
Stay current on what's happening in Flash business. Sign up now for the Flashzine newsletter.
Balsamiq Mockups - a solid case for AIR