I’m excited to announce the beginning of the Public Beta for a remarkable project called the Stealth SDK. Stealth is a project dedicated to building better User Interfaces in Flash! The project has been evolving behind closed doors, in hidden development and private betas. Now opening up, with new opensource licensing and a codebase available on GitHub, Stealth can strengthen your own ActionScript workflow and provide graphics, layout and skinnable components to your mobile apps and games.
There’s much more to this project than could possibly fit into a single post. Go check out the evolving website and watch for the “Getting Started” and other resources coming soon. This project has taken up a majority of my time over the last year, including my dedication to blogging. Now with its release you can expect much more to come on surrounding topics and related discussion.
Note: I will also be presenting on Stealth at the Adobe MAX Conference today, 12:30pm session of the FITC Unconference and again at 7pm at 360|MAX. I’m happy to present at other conferences and user groups, so if you want to hear more about this great initiative feel free to reach out to me. Twitter: @xtyler
It’s been a busy year since my last post. I quit a comfortable job to go out on my own and brave the world of consulting. I took on every project that came by me, learned my pace and made my way. I’ve worked with some great individuals and company’s doing exciting and profitable projects. I’ve taken off some months to devote to open source, back on to full-time paid work, and finally, again, found my pace balancing the two. Through mistakes and frustrations I still love contracting, working with great teams, connecting with community and orchestrating projects with the technologies I love.
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…)
I tried out the editing features in Camtasia Studio for Mac (top screencasting software) and really liked the process. It was easy to throw together a mix of audio and media and spend a few too many hours tweaking and enjoying the creative flow.
Well, creative is a relative term, see the results:
Viva la Flash!
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.