Hey folks,

Last week, I created a prototype of some Feathers-like components running
on top of CreateJS, but written in AS3 and transpiled with FlexJS.

Here's a little demo:

http://joshblog.net/projects/feathers-createjs/demo/

It's 50 buttons that can be scrolled vertically. Click/touch and drag to
scroll (like a mobile app). Nothing amazing, but I think it shows the
potential.

I tested scrolling performance on several devices. It maintains a good 60
FPS on my Nexus 5 and iPad Mini 3. It's still quite smooth on a couple of
three-year-old devices (Nexus 7 and Nexus 10 from 2012). For fun, I also
tried it with the original Kindle Fire from 2011, but that was super slow.
I suspect that this device's browser isn't capable of drawing canvas with
GPU acceleration, though.

I found that I needed to make one particular optimization to get the best
performance. Most events dispatched by a Feathers component in this demo
come from an object pool so that event objects can be reused. This boosted
FPS on mobile devices a lot, in the same way that it helps in Starling.
Garbage collection (and possibly allocation, to some degree) is a
performance killer when it comes to UI.

Scrolling is powered by the Zynga's "Scroller" JavaScript library. I simply
made some externs for it. Being able to pull in existing JavaScript
libraries is really nice.

I put the source code for this experimental version of Feathers up on
Github:

https://github.com/joshtynjala/feathers-createjs

You'll see that there are some workarounds for bugs in the transpiler
(which I've reported), but overall, it looks like regular old AS3 that
you'd write for the Flash runtimes. It felt really nice to bring my AS3
skills to a different environment.

- Josh

Reply via email to