Being awake and trawling the web at 3 AM sometimes means you get an early jump on tomorrow’s big announcements. Here’s a snapshot of the Photoshop Express uploader. Great workflow with a sophisticated and understated UI. I dig it, MUCHO.
Looks like they will be using a tiered model with a free basic version and a paid premium version that unlocks more features. You can really start to see the impact of the Adobe / Macromedia aquisition with these web based products. Looks like 3+ billion dollars gets you Flash Player and sweet ass web based versions of your products.
I made a couple of Jing’s of my first stumble through the application. These are really only useful if you don’t want to sign up, but want to check out the ui and workflow. If you’re an Adobe user experience guru you also might be interested in watching someone pop their cherry. There’s no audio so scrub away.
Here’s the end result.
A few lessons learned while serializing custom classes.
Compiler metadata tags only get you part of the way. Metadata alone is perfectly suitable when you’re not serializing classes with members that contain complex datatypes where those complex types have private members.
If there are private members in your complex data types then you’ll need to implement IExternalizable.
IExternalizable requires implementing two methods, ‘readExternal’ and ‘writeExternal’.
Another thing to watch out for is that it appears you must use a no args constructor in order to deserialize an object. If anyone knows otherwise please leave details in the comments.
AS3 makes it ultra simple to serialize variables via the IDataInput and IDataOutput objects. You just need to remember, when writing out things like Strings, to use writeUTF / readUTF rather than writeUTFBytes / readUTFBytes. The writeUTF method inserts a UTF string representing the number of bytes in each String which means you don’t have to do any grunt work when deserializing with readUTF — nice.
I haven’t been super plugged into the blogosphere lately so I’m not sure if anyone’s done this or not, but here’s a look at what metadata is contained in the onMetaData callback of an mpeg4 video playing inside of the Adobe Flash Player “Moviestar” beta.
The mp4 file was transcoded using ffmpeg on the mac.
It kicks ass to have the “seekpoints” array of seekable times in the metadata, but I really wish there was an array of corresponding byte offsets so that it was possible to determine if the seekpoint you wish to jump to has actually been downloaded. I’d also like to know how and where metadata is stored in h264 containers and whether there are existing tools that would allow the *injection* of additional metadata.
After banging my head against a brick wall for a bit, I finally realized that when embedding assets in ActionScript3 files the path to the embedded asset is relative to the location of the .as file in which the embed statement is placed and not relative to my MXML or AS application entry point. If you look at the image below you’ll note that the embed statement has to traverse up the package structure (3 levels) before pointing to the required graphical asset.
It’s a bit strange that the compiler isn’t smart enough to establish a top level path to assets based on the application entry point, but maybe I’m missing something.
Simon Cave points out in the comments, “You can use an absolute path (which is actually relative to the project directory) by starting your reference with a forward slash.” Here’s what that looks like:
In case you’re wondering where Flex Builder installs the Flex framework .as source files here’s a snapshot:
And Here’s a path to copy and paste (based on the moxie beta):
/Applications/Adobe Flex Builder 3 Plug-in/sdks/moxie/frameworks/projects/framework/src