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:
(more…)
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:
(more…)
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.
As a primary contributer on a couple of open source (read part-time) projects my time is sometimes stretched thin. The Flight Framework is a core library focused on providing many common solutions such as improved databinding, undo & redo, an MVC workflow among others. Flight released its “1.0 Release Client” 8 months ago and has yet to finalize a 1.0 release. The framework still rocks but it’s not well tested and documented, and it isn’t getting there in a hurry – a common problem with open source software.
The biggest delay to Flight has been Reflex, my old flame and new obsession. Reflex is a UI component framework, fast and small enough for Flash projects, but with a planned feature set that’s richer than Flex. Reflex will be introduced to the community at the upcoming 360|Flex conference, after which I anticipate being able to split my time between these two open source projects once again.
In reading Grant Skinner’s recent post on Adobe and Developer relations I recalled some past experiences of my own. First, for context, one of Adobe’s most recent lab-additions named Squiggly, the AS3 spell checker, is viewed as direct competition to a commercial project already established in the community. The discussion of whether Adobe should have bought out the project or at least consulted with the group is two-sided as you’ll read in Skinner’s comments. And, as Grant points out, this is certainly nothing new from the software giant.
(more…)
I finally have a buggy, working version of my AS3 expand fill (or stroke along a path, or line offset … take your pick). An ActionScript-based (dynamic) equivalent to Flash CS tool’s expand fill feature, also the same as a graphic stroke. Because I need this thing to be as high performing as possible (I’ll be using it at runtime all over the UI), and because this type of solution is a big pile of mathematics, it’s been a very interesting journey. Among the challenges I’ve had to deal with:
I found something funny the other day when inspecting Flash Player’s built-in SimpleButton, a standard member of the display list. Or I thought it was standard.
SimpleButton isn’t a DisplayObjectContainer, so it doesn’t have methods like addChild() and getChild(). Instead it has convenient button states, such as the upState property, that contain children in a different way than DisplayObjectContainer. Which made me pause.
DisplayObject.parent is typed as a DisplayObjectContainer, both in the documentation and when analyzing the class through describeType() (reflection). So what is the value of the parent property when a display object is added to a SimpleButton? It’s the SimpleButton instance, a non-DisplayObjectContainer! Test all day long if you like, the parent property is very clearly typed to the container but just as clearly returning a different type. I now relinquish all claim to understanding the Flash Player and how it works.
I just got word that I can pick up our Flight t-shirts on Friday. Provided by ZenPrint these bad boys were designed by Bryant Robertson specifically for the 360|Flex Conference (if you haven’t registered yet you better get tickets). The ZenStudio design tool was built on an earlier version of Flight and the ZenPrint guys have graciously offered to sponsor the project at the conference. Thanks again, you guys rock! And of course props to our designer, we’re told we have the coolest logo of any other framework.
Flight is an application framework for ActionScript 3 (Flash & Flex) – you can read more about it on the website. My brother Jacob and I will be handing out the shirts and some print material at the conference where we’re making some announcements for the Flight Framework.
Hope to see you there!
I always wondered where I would end up using custom namespaces in ActionScript 3. Now that I’ve been using them I have found a few bugs and gotchas, tips and tricks, and now I generally understand namespaces better (or think I do).
(when reading this article it will help if you already have some familiarity with namespaces in Flash & Flex. To learn more about namespaces awesomeness, John Lindquist has an excellent video post that covers the concepts really well and goes into some advanced topics)
To start with I’d like to present a unique review of namespaces concepts (this isn’t pasted from the documentation, so it might be either 1-more helpful or 2-just plain wrong). There are reportedly 5 types of namespaces, but I’m going to say there are only 4 (this is the helpful/wrong portion).
(more…)
Jacob has been in an awesome groove lately, coding his own design engine because I’m too frustratingly indecisive to settle on my own implementation. I’ve been picking at a graphics-skinning-component-media library for way too long, always “just for fun”, so of course it hasn’t gone far. Now I’m jealous of his progress … I’m going to have another run at my own. I hate being inspired by competition (only), but it’s such a motivator – maybe from being the younger brother.
Gauntlet thrown, code spewing, I’m comin’ in!
And thanks Jac.