Reflex at 360|Flex

Reflex was finally demoed for the first time at the recent 360|Flex Conference. This new component framework is familiar to the Flex Framework in features and use though it is completely independent. Reflex extends the Flash Player through composition adding a robust layout, skinning, a component suite and an MXML workflow.

Probably the most unique aspect to the design of the Reflex system is a concept called Behaviors. A Behavior defines specific logic or interaction for a component, which is usually made up of several behaviors. As with component skins behaviors may be added and replaced at runtime and will utilize the styling features of the Flash Builder.

Through skinning and changing behavior a component can be completely redressed without extension. Below is an example of a list of data, moon phases and their cycle percentage:
Continue reading

Flash Layout Engine in Reflex

As a component platform Reflex is built on a foundation of core libraries and utilities. Because of the unique culture of the project most of these solutions are independently useful to the Flash developer. Its layout engine is one of Reflex’s profitable solutions and can structure the visual flow of any member of ActionScript’s display list.

The following demo illustrates one of the default layout algorithms in Reflex, named Dock (notice the minimal use of containers used to achieve the structure). Click and drag to resize:
Continue reading

Reflex: Rethinking Component Design

So is the title of the upcoming 360|Flex presentation on Reflex, a toolkit for Flash developers that has been in the works. The conference in March will finally mark its début:

With the emergence of so many new technologies it is an exciting time to be a developer. Embracing the spirit of advancement, Reflex was created to extend the Flash Platform with a component toolset worthy of its industry. Reinventing the features of Flex for the creative workflow, Reflex enhances the Flash Player (rather than abstracting it) to meet the demands of next generation applications and devices. Come be among the first to see what Reflex can do and learn about its unique architecture, the details of the project, its goals and its future. (session description)

The presentation will begin at 1:00pm on Tuesday, the 9th of March. Right after lunch. Be sure to come early for a good seat.

Custom Binding Released!

Delivered as promised. It has a smaller memory footprint, a faster clock-speed and, best of all, it’s 100% weak-referenced. Data binding is supposed to be light and unobtrusive. Now you can have the smallest ActionScript 3 binding available, released as a component of the open source Flight Framework.

Flight’s data binding is powerful and simple, consisting of two classes. A Binding object represents a single data source: a source object and a source-path, such as model and "user.userName". Any number of event listeners and object/property pairs can be registered with this single Binding instance, allowing each to update when the data source changes. This class may be useful for special needs, but you usually don’t deal with Binding directly.

The Bind class is the primary interface to Flight binding and is used much like you would use Flex BindingUtils. This class exposes a static API for adding and removing bindings and listeners. It can also be instantiated via MXML for special cases where you need weak-reference binding that curly-brace bindings just don’t support. Here’s an example of usage:

Binding via Static ActionScript API:

// Bind.addBinding(target:Object, targetPath:String, source:Object, sourcePath:String, twoWay:Boolean = false):Boolean

Bind.addBinding(this, "userTxt.text", this, "model.user.userName");

Instance binds via MXML:




Visit the Google Project to download release 0.8.1 or higher.

Continue reading

Flight Framework: Early Beta.

It isn’t easy for me to release code that isn’t finished, so I’ve had many projects come and go without ever seeing the light of day. But not Flight, not this time.

I’ve posted about Flight before: it’s a simple and powerful application framework in ranks with Cairngorm and some of the newer frameworks. Here’s an excerpt from Flight’s initial post:

The Flight Framework is the evolution of an ActionScript framework that has been around for a few years. It was a replacement to Cairngorm and was originally designed for web-based, design-centric applications such as logo makers and book builders. Even now the framework ships with the CommandHistory – an entire solution for undo and redo – and other practical utilities that strengthen its offering.

Flight Framework maintains an emphasis on supporting capable clients: Flex and Flash applications that are much more than just a pretty face to a server implementation. Through features like domains (modular MVC systems) and a prescribed structure, the framework transforms component scripting into real application development.

Continue reading

AS3 Button Behavior Made Easy

I posted a rant on “releaseOutside” earlier this month – finally, here is the example and the code for making anything a Button in ActionScript 3. I’ve also added some really nice features since then. I realized after venting about dragOver, dragOut, and releaseOutside that, unless you built custom components in ActionScript 2, you probably have no idea what these events actually mean for a Button. So now, instead of imparting the boring details of exactly how a Button should work, I’ve implemented 3 new events: stateUp, stateOver and stateDown.
Continue reading

My First Curve-To-Curve Intersection Tests.

Finding the intersection of two lines is a fairly straightforward algorithm. You find their slopes, factor the equation, simple. But finding the intersection between two quadratic bezier curves doesn’t seem to have a simple equation. From the sources I’ve read (I’ll try and find them again so I can cite and quote them) curve-to-curve intersection can only be solved as an approximation.

There are a lot of cool things you can do once you have both line and curve intersections figured out. For example you can combine two shapes wherever they overlap. You can also do some less obvious things such as path offsets (equivalent to Flash authoring’s Modify > Shapes > Expand Fill)
Continue reading

NEW! “releaseOutside” Event in AS3

Wow, making a simple button out of a Sprite in AS3 is not an obvious task. I mean a proper button with correct states and with dragOver, dragOut, and releaseOutside -type behavior. Those who coded much in AS2 know what I’m talking about. When a button is pressed and the mouse moves off the button (still pressed) onto a neighboring button, the second button shouldn’t dispatch the rollOver event and subsequently switch to an over state, the first button shouldn’t dispatch a rollOut but a dragOut, etc etc.
Continue reading

New & Improved Flex/Flash Data Binding

I’m just finishing up the development of another weak-referenced data binding. The implementation I’ll be releasing soon works seamlessly with Flex and Flash projects, ensuring that application bindings don’t cause memory leaks. And it’s smaller and faster than Flex’s built-in BindingUtils Continue reading

<XML> Graphics

I’ve been doing some heavy research lately in FXG and Degrafa, digging through source code and everything. FXG and Degrafa are both graphics formats in XML markup (like SVG), both opensource, both pretty cool. I wasn’t particularly in favor of a markup format for graphics, with designing applications via MXML and such. I’ve now been converted. I think it’s really cool, useful for things like versioning, etc, and provides a more approachable file specification for developers to implement.

I still think designing is best done (for the most part) in a design tool like Photoshop and Illustrator. I’ve built several ActionScript-based design/editor apps in the past and wanted to put that experience toward a really great design tool that supports the two formats. Somewhere in the process I got a little excited (this will be no surprise to anyone who knows me) and started building my own graphics format. It serves no real purpose that FXG and Degrafa don’t cover, but I love it and it’s been very fun to build.

I’ll be getting back on track now with a FXG/Degrafa design app. Because of my under-the-hood time with the two formats I’d like to present on the formats and XML Graphics in general. I’ll get into the pros and cons and the future predictions sometime on the blog too.