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.

1
2
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.

1
2
3
leftContent.setMask(leftMask);
leftContent.cacheAsBitmap = true;
leftMask.cacheAsBitmap = true;

Work on DUVAGAII Mentioned in The Latest CTL Newsletter

DUVAGAII is an application which heavily relies on a number of Flash modules written in ActionScript 2.0 for delivery of images, audio, and video content. We have also integrated the Flash Media Server to produce some really amazing video editing tools. The only people who have access to the system right now are faculty and students who are using it in the classroom for the organization, arrangement, editing, and presentation of digital objects. There will be a public side to DUVAGAII once we complete the core functionality and build up our collection of copyright free objects. A PDF of the newsletter can be found here.

Forcing XML Refresh in ActionScript 2.0

I’ve been working with Flash since version 4 but only came across this trick a few weeks ago. Normally, when using the XML object in ActionScript to load data into your application, if the XML file has been cached, Flash will not reload updated XML data until the cache is cleared or expires. For many applications I’ve worked on, this has been a small issue as data can be updated many times during the day. To force Flash to always retrieve a new version of the XML, you must append a unique identifier to the URL in the load method. For instance, using getTimer(), you can say:

1
2
3
4
var myXML:XML;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("http://somewebsite.com/data.xml?"+getTimer();