Viewing the ‘Flex’ Category

JavaScript for the Flex Dev Slides


Presented at 360|Flex 2012 in Denver, Colorado.

Speaking on JavaScript at 360|Flex 2012


It’s almost time for another 360|Flex conference! This conference will be held in Denver, Colorado, April 15-18, 2012. Get your tickets fast while discounts are available! It’s always a huge opportunity to learn new things and get in touch and have fun with the community.

I’ve accepted the honor of speaking at this year’s conference and will be speaking on JavaScript on Wednesday at 10:50am. As you probably know, the Adobe community has really been shaken up over the last few months. Adobe’s position on Flash and Flex has morphed and many engineers are taking a closer look at other technologies. While JavaScript holds a stigma of being a red-headed step-child from the same orphanage as ActionScript 1, many see it as the inevitable future of the web. While the language hasn’t evolved much, libraries and patterns have shaped up to help provide an environment conducive to building robust, dynamic enterprise apps. We’ll discuss these libraries and patterns, learn how they relate to Flex, and make a comfortable home away from home.

Many of the concepts will be pulled from the JavaScript architecture series I recently started. Also, while I am a software engineer at Adobe, my thoughts are my own and do not represent those of Adobe.

Macrobot: Macro Commands For Robotlegs


Robotlegs is a fantastic micro-architecture for ActionScript. One pattern used with Robotlegs is the command pattern. Commands are generally short-lived objects that execute a segment of code in response to an event. By encapsulating code in a command, you can maintain low coupling in your app (the view and the command don’t need to be aware of each other) and reduce duplicate code. See the Robotlegs Best Practices page for more info regarding commands.

You may run into situations where you wish to batch commands. Macrobot simplifies this process and provides two ways to batch commands:

Sequence: The batch of commands will be executed in order. The second command will not be executed until the first is complete, the third command will not be executed until the second is complete, and so on. The batch will not be complete until all its commands are complete.

Parallel: The batch of commands will be executed as quickly as possible without respect to completion of any of the other commands. The commands may complete out-of-order. The batch as a whole will not be complete until all its commands are complete. Continue reading »

Spark ProgressBar


Here’s a Spark-based progress bar. This component provides the ability to set an “event source” like a URLLoader. When the event source dispatches progress events, the progress bar will automatically update. On the other hand, if you don’t need automatic updating from an event source and just want to set a min, max, and current value, you really don’t need this component. Instead, you can use the Range component that comes with the Flex SDK and skin it just like this one is skinned. Right click the app to view the source. Enjoy!

Get Adobe Flash player

IndexableList: Indexing For Faster Lookup


In my last post, Collections And Chaining For Separate Presentation, I mentioned a few data structures for holding a group of objects. These are great for their purpose but sometimes they can be enhanced for a particular project. In this post, I’ll show you a great way to maintain a custom index for a group of items for easy and efficient lookup. Continue reading »

Collections And Chaining For Separate Presentation


The purpose of this post is to describe the various collection data structures used in Flex and how they relate. Once we understand that, we’ll look at a problem I see commonly in Flex apps regarding separate collection presentations and how to fix it. Continue reading »

Cursor/Iterator for Vector and Array


Along with Flex came IViewCursor which provides a way to itererate through ICollectionView classes like ArrayCollection and XMLListCollection. Sometimes though we’re dealing with Vector or Array or are developing an ActionScript-only project. Here’s a cursor/iterator that will allow you to navigate a Vector or Array: Continue reading »

Studio J Online Scrapbooking


Scrapbooking just went from crafty women huddled around piles of paper shreds to online digital awesomeness. Not that crafty women or piles of paper shreds aren’t awesome. Nay. But for many, this translates into finding babysitters or a willing spouse; finding large blocks of time; purchasing a gajillion expensive scissors, stamps, buttons, papers, and ribbons; finding storage for such paraphernalia; and discovering craftiness from within. I mean, seriously, does this or this look fun to clean up? I’ll pass.

For the last year and a half at Rain I’ve been working on Studio J, Close To My Heart‘s flagship online scrapbooking application. It’s been quite a ride but the result is really quite revolutionary. Continue reading »

Shuffled Row Solver


I got my my wife a Kindle for her birthday. She loves it. But she loves beating my high score on the Shuffled Row game even more. So, I made the Shuffled Row Solver. Cheating, you say? Is it cheating to use a dish washer to wash dishes? I submit it’s not. I’m kidding, I’m kidding…of course it’s cheating but it was still fun to make and fun to see her face when she saw my “high score”. Yes, I told her about the app afterward and gave her full credit for continually beating my score. Continue reading »

SpeedDial AIR App: Dial from the Desktop


Please upgrade your Flash Player This is the content that would be shown if the user does not have Flash Player 9.0.115 or higher installed.

Go ahead. Dump your wallet out on your desk and filter through your receipts and frequent-diner cards trying to find that one business card with that one phone number. Then proceed to pick up that phone and take on the monumental task of manually dialing each and every grueling digit. Pshhhh. That’s so last year.

Introducing SpeedDial. Run the app and click on a Google contact with a phone number. Your phone will ring. You pick up. The contact’s phone will ring. They pick up. Done. Want to call them again? Click their name. Done. Again? Click their name. Done. Continue reading »