On 7/27/16, 1:14 AM, "Harbs" <harbs.li...@gmail.com> wrote:

>I’m running into lots of issues with the fact that HTMLElementWrapper
>extends Sprite. The underlying problem is because all the native Flash
>properties and methods are being exposed to the compiler for all
>sub-classed objects.
>
>For my port this is causing two issues:
>
>1. It’s hard to find all the dependancies on Flash. Ideally, I’d like to
>base my components off FlexJS ones instead of Spark and native Flash ones
>and have the compiler find the pieces I’m missing. This is not working
>because a lot of pieces appear to the compiler as fine because Sprite is
>the base class.
>
>2. I’m getting lots of conflicts with property and method names. This is
>mostly happening with components which were based off of Spark, but I’m
>getting lots of compiler errors where pieces are not marked as overrides.
>They should not have to be marked as overrides because FlexJS does not
>implement them, but Flash does.
>
>The third issue is related to code completion help. The user should not
>get hints for Flash properties and methods because they will not work in
>HTML.

So we've tried wrapping Sprite instead of extending it and ran into other
issues in that implementation.  As I mentioned in another thread, wrapping
Sprite doubles the number of objects and therefore adds runtime overhead
to solve what are essentially author-time problems.  So in this fork of
this thread, I want to explore alternative solutions.

1.  For this problem, I think you could compile your app against the "JS"
SWCs.  As a reminder, each SWC in FlexJS is actually two SWCs: one
containing SWF code, and one containing JS-only APIs to be consumed by
downstream SWCs.  I think the "JS" SWCs do not have any Flash
dependencies.  The "JS" SWCs do have some non-SWF public APIs used for
communicating internally, but it is probably important for you to know
that before the cross-compile anyway.  If you can get a clean compile (it
won't run as a SWF for sure), then I think you can then switch back to the
regular SWCs and get a runnable SWF.

2.  I think the parser builds the AST without caring about overrides and
override detection is done as the AST is being read.  It might be possible
for Falcon to auto generate the override if the base definition is a Flash
definition.

3.  Similar to 1, maybe the SDK should be set up with the JS SWCs by
default and the SWF compiler could auto-swap in the SWCs for Flash when
actually linking in code into the SWF.  Also, we could just use [Exclude]
metadata to hide the Flash APIs although apparently, not every IDE
supports [Exclude] metadata.

Thoughts?
-Alex

Reply via email to