Hi,

As you may know, I've been exploring what it would take to create a set of
components for FlexJS that more closely match the Spark (and MX) APIs from
the regular Flex SDK.

Today, I reached an early milestone:  I got a subset of UIComponent to
subclass the FlexJS UIBase and cross-compile with zero errors.  It doesn't
run yet, but it gives us information about the effort and patterns
involved and some early idea of the size.

In order to create a manageable subset, I commented out all code in
UIComponent related to:

-accessibility
-rotation
-scale
-3D and Transforms and other AdvancedLayoutFeatures
-designLayer
-BlendModes and BlendShaders
-Filters
-doubleClick
-cacheAsBitmap, cachePolicy and cacheHeuristic
-AdvancedStyleClient
-Repeater
-XML DataBinding

Most of what is in the list is stuff related to "fancy" visuals.  IMO, you
can build many apps without these features.

In addition, I changed some weak reference listeners to strong listeners
since we don't have weak reference support on the JS side so any code that
does a lot of discarding of UIComponents is going to leak (for now).  The
only idea I have for dealing with lack of weak references going forward is
to add a dispose() call to UIComponent and other objects similar to what
you already have to do for Bitmaps and XML.

It turns out that it still took some 212 files to compile UIComponent.
That's how complex the web of interdependencies are in the Flex SDK.  But
interestingly, the cross-compiled output minified down to "only" an
additional 140K!  I was thinking it would be 10 times as big.

So that's promising, and means I will continue pushing on getting this to
run and port more code.  I think the next milestone is to port
mx:Container, mx:Label, mx:Application just to see a Hello World run.
Then start porting Spark.  How long that will take is unknown.  The key
question is how many touch-points there are with Flash, especially APIs
with good names that shouldn't be renamed (like 'parent').  Maybe
UIComponent (and UITextField) are the primary points of contact with the
Runtime and higher-level components will port more cleanly.

But first, I have slides and demos and hopefully a release (without this
stuff) to finish by next Monday.

Feel free to ask questions,
-Alex

Reply via email to