As I mentioned in a previous post, it really is an exciting time to be a Flash (Flex/Apollo) developer. This was reiterated to me as I spent parts of the past 2 weeks building an Apollo widget I call mxnaQUBE currently in beta version 0.5. I have to say I haven't had this much fun developing something in quite some time. Even though the API isn't nearly complete being that this is an alpha, there was enough there to build a widget (maybe it's an 'app', I don't know...) and one that I think I'll be using regularly. Here is the rundown:
What does it do?
mxnaQUBE is a way to view posts aggregated by mxna (Macromedia XML News Aggregator). It currently provides access to the newest posts, most popular posts and the ability to search posts. On top of that, it auto-archives all posts that are consumed by the widget. The best way to explain is to show it to you, so here are some screenshots:
New posts are displayed and updated every 3 minutes (version 1.0 will include a preferences panel that allows you to customize this, among other things). Also, it prevents display of duplicate posts that are often found on mxna.
You can search mxna based on keywords
You can view the most popular posts from the last day, week, month, year or of all time.
The mxnaQUBE automatically archives all posts that are downloaded to it, so you'll have a history of posts grouped by category and feed that they are associated with.
There is a "mini" view that displays and cycles through only unread new postings. This provides a concise way to view new posts.
As the name suggests, the widget is essentially a cube which can be rotated to see any of the views mentioned above. You can rotate the cube by "nudging" the arrows in the bottom corners :)
Globally, the mxnaQUBE also implements tooltips as well as a connection status monitor indicating when you are online or offline.
What will version 1.0 do?
Version 1.0 will add functionality such as the following:
Right click menu (Apollo 1.0 WILL implement full control over the right click menu - Woohoo!)
Preferences panel to provide the ability to control global settings as well as customize which feeds you want to auto-archive.
Possibly additional cube views with the ability to choose the 4 views that are most beneficial to you.
Possible auto update functionality to fix bugs, add features, etc.
Other things I discovered while building it.
Building an apollo app in Flex Builder is really as easy as people have said it is. Adobe has done a good job of integration. Doing things like transparencies, window dragging, minimizing, closing, and working with files are super simple.
Data binding is sooooo simple and works so well it's amazing.
For the most part, skinning is pretty straightforward, however, I did run into a couple of issues. The scrollbar skins in the AeonGraphical skin fla don't seem to match the width of the default scrollbars. Also, i ended up scrapping my scrollbar skins altogether because for some reason when you use a custom skin for the scroll track, the ability to click the track to scroll gets killed altogether. Anyone have a workaround for this?
I love mxml more and more every day. To be able to extend mxml components is awesome. However, there is an issue with adding children via mxml to both the superclass and the child class as you get a compilation error. A workaround is shown by Peter Ent, but to be honest, I couldn't get it to work properly.
The Flex Style Explorer is a God-send.
To manage all of my embedded assets, I wrote a simple AssetManager that pulls in all embedded assets and provides a static class through which to access your asset (handy if you are using your asset in multiple classes).
Does anybody have a simple way to swap out HTML number codes for proper characters? For example, ’ represents the right quotation mark.
NOTE A: This is a beta version and so I make no promises that it won't self destruct at some point. I have left it running for extended periods of time and it seems to function properly, however, if you do notice any bugs, please email me at firstname.lastname@example.org.
NOTE B: The data coming back from the mxna webservice can be slow at times (particularly the data for new posts) so be patient :).
Please email me your feedback as it is appreciated. If you have any suggestions on things you would like to see, please feel free to email me those as well (not saying they'll get implemented, but it never hurts to ask).
[Update] Apparently the fonts on the ComboBox and "GO" Button are not embedded properly. Not sure why since they work properly in all other components. Anyone run into these font embedding issues before? Also, it appears that the bitmap font appears to be blurred. Not really sure why. Any comments would be welcome. [/Update]
[Update 2]Fixed the font embedding issue with ComboBox and Button. It was due to the fact that those components use bold versions of the fonts (which doesn't work with pixel fonts). Thanks to Kyle for pointing out that they weren't embedded properly. Just updated the fontWeight to "normal" and all is good. Also, the fonts are now sharp (they weren't previously because for some reason I set fontAntiAliasType to "advanced". The download link above has been updated with the new .air file.[/Update 2]