Archive for November, 2010
I just passed Flex 4 Adobe Certified Expert Exam
Today I passed Flex 4 ACE exam. I made a very decent score of 93% with following distribution in the exam sections:
- Creating a User Interface (UI) 85%
- Flex system architecture and design 100%
- Programming Flex applications with ActionScript 100%
- Interacting with data sources and servers 87%
- Using Flex in Adobe AIR 100%
To prepare for the exam I used Attest3, I went through the mock tests 3 or 4 times and at the same time I used Flex 4 help and ActionScript 3 docs as a reference. I encourage anyone to take the exam as it gives you a good overview of your Flex/AIR knowledge.
Video with an un-framework overview
I wanted to share a video recording with an un-framework overview. This simple library has evolved a little bit from my previous post but I expect it will stay in this form for good
I don’t think it can evolve to anything more sophisticated but I hope that it will serve as an inspiration to others when building their own sets of helpers. I plan to use it solely as a substitue for my favorite DI frameworks when doing mobile Flex development.
UnFramework – or how to work without any frameworks
Those who know me or at least subscribe to my blog know that I’m a big fan of Flex/AS3 frameworks. At this year’s Adobe MAX conference I even had my own session where I covered five major DI frameworks. Usually these frameworks provide a lot of productivity features and helpers like: IoC/DI, Event/Messaging bus, implementation of some architectural or design patterns (MVC, Command…), and many others. But what happens if we can’t or don’t want to use any of these frameworks?
Extending model objects with ObjectProxy class
Recently I was looking for an easy way to extend my existing model objects with additional properties. The problem I had was that there was no option to mark these model classes as dynamic. What I came up with was a solution that uses the ObjectProxy class that comes with Flex. ObjectProxy essentially is a class that allows you to track property changes of its wrapped object. So what I also got with this approach was an ability to register a PropertyChangeEvent handler with my model objects.
The snippet below shows how I extend my User class object with an additional selected property. This is a view specific property so it wouldn’t really be a good practice to do it directly in the model.
// Wrapping each user into ObjectProxy with selected additional property selected var userProxy:ObjectProxy = new ObjectProxy({user:user, selected:false}); // Registering event PROPERTY_CHANGE handle userProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, userProxy_propertyChangeHandler);
Below is a reason why I needed all that and how it works in practice; you can right-click the example to view the source code. BTW: If you are looking for a simple and quick way to have a dynamic Checkbox List this a way to go.
Another thing that the ObjectProxy class can resolve is a very common warning that occurs when you try to bind to not bindable properties: warning: unable to bind to property 'foo' on class 'Object' (class is not an IEventDispatcher).

