I just released a minor update to to fix a bug the original release had that caused the ANT commands to fail on Windows. If you’ve already installed the gem before, then simply run:
$> gem update puremvc-gen
to get the new version. If you’re installing for the first time, refer to the original blog post for instructions.
I just published a code generation tool I’ve been working on lately. It’s an ANT-based tool, but is distributed via , which allows it to be easily installed as a command-line tool once you have , rubygems, and installed.
Once you have those programs installed, simply enter ($> just denotes you are at a prompt on the command line)
$> gem install puremvc-gen
and the tool will be installed. Read on to see how to use it…
I’ve encountered some odd behavior that I would have expected to work when calling readObject() to de-serialize an array of anonymous objects. If anyone knows what’s going on here, please enlighten me. I’ve also on Adobe’s bug tracking system if anyone wants to follow the progress at Adobe’s end.
I’m trying to read all of the bytes in the readExternal() function of a class implementing IExternalizable, so that I may use the position property to move back in stream in case I need to do so. The problem only seems to occur if I am trying to de-serialize an Array of anonymous objects. If I put plain old Strings in the Array it will work fine. I find this odd since I would expect
publicfunction readExternal(input:IDataInput):void{var arr:Array = input.readObject() as Array;
}
to have the exact same behavior as:
publicfunction readExternal(input:IDataInput):void{var ba:ByteArray = new ByteArray();
var inputBytes:uint = input.bytesAvailable;
input.readBytes(ba);
var baBytes:uint = ba.bytesAvailable;
var arr:Array = ba.readObject() as Array;
trace("inputBytes == baBytes ?= " + (inputBytes == baBytes)); // traces "inputBytes == baBytes ?= true}
One of our developers recently encountered some strange behavior when he was dragging a piece of data (which was a custom class) from a TileList and dropping it into a List, but losing some pieces of the dragged data when it was dropped into the List. I discovered the root of the issue by delving into the source for the dragDropHandler function within ListBase…
When we first started developing Flex applications for clients when the time would come to send the SWF over, I would build the application in Flex Builder and send off the generated SWF. This got the job done, but it imposed a few limitations since I was the only Flex developer in our office:
I was the only one that knew how to compile the application
If someone else wanted to try to compile the application, they’d have to install Flex Builder
After reading a I realized it was time we put in place a more versatile environment for building Flex applications.
Yesterday Adobe announced a prerelease version of which is code-named “Astro”. Users may install it and ensure their existing Flash content continues to function in Flash Player 10. Some are available as well to see the new features in action.
Some of the exciting new features include:
the ability to render filters and effects made using the
dynamically manipulating sounds at the ByteArray level
new Vector class for strongly-typed, more efficient arrays
and plenty others
For users that wish to start compiling their content into Flash Player 10 and taking advantage of things like , they may using a nightly build of the Flex 3 SDK.
Also, Aaron West of links to articles and blogs related to the release.
is an (Model-view-controller) framework for developing Flex components.
created the project after being inspired by a presentation gave at MAX Barcelona.
session (courtesy of ) are well worth the watch.
If you’re interested in playing with (or just learning more about) head on over and . I just added a wiki page explaining if you need help getting started.
and went to the Baltimore stop of Adobe’s tonight.
Ryan Stewart
Ryan Stewart kicked off the keynote giving an introduction and overview to Adobe AIR. After briefly going over the background/web-history of the Flash player and the motivations behind the development of Adobe AIR, Ryan showcased some AIR applications:
A task app that was made in 24 hours w/ straight CSS & JavaScript by the creator of the Ext framework
(not publicly released yet)
He also highlighted that with the newly to Flash Player 9 (codenamed “Moviestar”), Flash SWFs will be able to support H.264 video and HE-AAC audio. This will allow Quicktime movies to be played through SWFs and the Adobe Media Player.
Ryan then mentioned that the second public beta drop of AIR will be released during the conference. Also, we were reminded of the : a contest to see who can make the best AIR application. The grand prize is essentially a $100,000 travel coupon. There will also be five category winners that will win “The Ultimate Desktop Environment”, which is pretty much a bunch of beast hardware.
Mike Chambers
Next up was demo’ing how to write a HelloWorld Flex-based AIR application. Pretty standard, but he went on to highlight the install experience for end-users that will be using AIR applications we developers will be creating. End-users will need the AIR runtime in order to install an AIR app, but developers will be able to place a Flash Badge on their website which will allow users without the AIR runtime to install both the runtime and their AIR application with only 4 clicks.
Mike finished off with pointing any developers that are starting to play around with AIR to the which have a ton of live data that can be used in an AIR app.
Kevin Hoyt
was next to demo how to build an HTML-based AIR Application.
Kevin emphasized that Flex Builder is not necessary to create AIR applications. The Flex 3 SDK (which is freely downloadable) contains the AIR SDK as well, so you can compile and debug your AIR applications from the command line. Dreamweaver CS3 also has an AIR extension so if you’re a web developer that’s afraid of the command line you can go ahead and develop your HTML page in Dreamweaver and debug the application or package it as an AIR file directly within the comfort of Dreamweaver.
Script Bridging
Kevin next demo’d the script bridging capabilities of AIR, which lets JavaScript reach into the ActionScript world and invoke any methods in the Flash API (anything in the flash.* namespace). The reverse is also true (ActionScript reaching into the JavaScript world). This means you can have a purely HTML-based AIR application that can call methods in the Flash API by simply doing things like:
<script>
var airFile = window.runtime.flash.filesystem.File;
var desktop = airFile.desktopDirectory;
var myFileInJS = new airFile(desktop.resolve("file_on_the_desktop.txt");
</script>
Here, myFileInJS is a JavaScript variable that references an ActionScript 3 class from the AIR SDK.
So “window.runtime.flash.* can let you directly use any Flash class from JavaScript. IMO the coolest thing Kevin covered is the ability augment the Flash packages you can use by simply script including a library.swf from any SWC to access those AS classes:
In this example, encoder is the PNGEncoder from the project, but the encoding is being done in JavaScript using AS classes! Very cool stuff. (FYI: a SWC is stored in a ZIP format, so you can just unzip a SWC file to access the library.swf inside of it)
Chafic Kazoun: Windowing in AIR
Windowing concepts covered/demo’d:
utility window
standard window
custom chrome transparent window
custom chrome where background is embedded in a SWF
custom window dispatching events and being listened to by another window
Ben Forta: AIR + ColdFusion
Highlights from Ben’s talk:
50% of existing ColdFusion customers have upgraded to ColdFusion 8.
ColdFusion/Flex Extensions for Eclipse available at Adobe’s ColdFusion page.
Can generate a ColdFusion-backed Flex web app w/ literally no front-end coding; the extension has Master/Detail/Master_Detail and DB wizards to configure everything which then generates the CFCs, MXML components, and CSS stylesheets using all best practices.
This was possible before in ColdFusion 7, but now ColdFusion 8 can generate a ColdFusion-backed AJAX/HTML/CSS web app in the same manner.
From AIR you can load an HTML page from a ColdFusion backend and it will properly renders this AJAX/HTML/CSS generated content.
Yesterday I became certified as an Adobe Flex 2 Developer. It was easy to locate and schedule taking the test through .
The studying materials I used to prepare were:
I had already begun programming in ActionScript 3.0 prior to learning Flex 2, but for those new to ActionScript 3.0 the documentation will get you up to speed.