Zoomify in Photoshop CS3

Doing some quick research at the request of a client and learned that a Zoomify export is actually built into Photoshop CS3 beta! I’ve been using the beta since it’s release yet had never noticed this option till now. While not something I would likely be using- I can imagine this feature would be huge for some organizations looking for a simple way to incorporate a hi-res image zoom tool into their websites without consulting a Flash developer.

ActionScript 3.0 and the Flex SDK

In my free time (right!) over the past few months, I’ve been working on some basic ActionScript 3.0 projects to familiarize myself with the new version. I’ve been using FlashDevelop linked into the Flex SDK to write and compile my code. While I have no gripes with Flex Builder 2, I find it amazing that anyone can just download the Flex SDK for free and start producing Flash with pure ActionScript. I’ve lately been very focused on keeping my code clean and self-contained. With AS2, I’ve always needed to tie everything to an FLA in the Flash IDE, even if working primarily with external classes in FlashDevelop or SEPY. Having a pure AS3 environment is huge. One of my favorite new features is the ability to set document properties through your package definition.

package {
import flash.display.Sprite;
[SWF(width="400", height="350", backgroundColor="#000000", frameRate="31")]
public class SomeClass extends Sprite {}

I haven’t used AS3 for any real world projects yet, but with so many benefits over AS2 already realized from simple exercises, I know the day is fast approaching. I may begin a series of posts on the benefits of using AS3 over AS2 as I encounter these things in my work.

Fullscreen Flash Player ‘Gotcha’

I’m not sure whether this should be classified as a bug or not. I’m currently working on a project which utilizes the new fullscreen capabilities of Flash Player 9. The module in question retrieves images, audio, video, and other objects for display one-by-one in an individual presentation format. One thing we’ve included in the application is the ability to link to external video from YouTube, iFilm, Yahoo Video, or wherever a user’s personal video material may be hosted. This is where the problem occurs. Flash Player security policy dictates that data linked across domains cannot be loaded into the player without explicitly allowing such communication through a crossdomain policy file. Seeing that we allow the inclusion of so many different video services for this application, it isn’t really feasible at this time to try and either load videos through the help of individual service APIs or to find some other way around these security restrictions on a per service basis. We currently handle this by displaying a message telling the user to click through to the video, essentially invoking a getURL() and opening the video in a new window or tab. When using this presentation module in fullscreen mode, invoking a getURL() will actually crash Firefox. It seems to function just fine in other browsers tested. For the meantime, I’ve set the external linking method to first pull the Flash Player out of fullscreen mode and then invoke getURL() which works just fine.

Stage["displayState"] = "normal";
getURL(videoURL, "_blank");

It seems this would be more of a Firefox bug than one involving the Flash Player itself. I wonder if anyone else has any insight to this particular issue? The workaround I have implemented works fine for now- but it is not ideal from a user perspective as they are automatically pulled out of fullscreen mode back into the browser. Perhaps this may be a good Apollo option?

Now Aggregated by MXNA

I’m very pleased to announce that this website is now aggregated by the Adobe Macromedia XML News Aggregator. I encounter a lot of unique situations in my work and do imagine that many will be able to benefit from my writings. After gleaning so much from this community over the past few years, I hope to make a worthwhile contribution in the days ahead.

Drawing a BitmapData Object from a Masked Source

I recently stumbled upon a really nice trick while using the BitmapData object. The problem occurs when attempting to use the draw() method on a MovieClip instance source that had a mask applied via setMask(). Either nothing would be drawn, or the content would be drawn incorrectly. I’ve found that setting the cacheAsBitmap property to ‘true’ for both the source content and the mask itself will get around this issue.

leftContent.cacheAsBitmap = true;
leftMask.cacheAsBitmap = true;