flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Schmalle <teotigraphix...@gmail.com>
Subject Re: Forking the Falcon compiler for Starling/Feathers MXML generation
Date Tue, 01 Mar 2016 22:30:13 GMT
Hey Om,

This is all purely hypothetical in my head right now so I may be missing
something as well but the first goal is to use Feathers out right, that
means hooking into Josh's classes. He does use a Bootstrap class to start
the app and that is what you are talking about with Application, that is
the boostrap, but from there is has not much else.

But I am not going to say much more until I get my head around the actual
problem which I don't have, just wanted to throw this out there.

Mike

On Tue, Mar 1, 2016 at 5:16 PM, OmPrakash Muppirala <bigosmallm@gmail.com>
wrote:

> If I may, there might be a better approach by just doing it within the
> FlexJS framework.  You should be able to create a
> org.apache.flex.starling.Application.as class where a starling display
> list
> is used instead of the regular display list.  You can follow the pattern
> that the org.apache.flex.jquery.Application.as or
> org.apache.flex.createjs.Application.as follows.
>
> Once you have the basic application setup, you should be able to construct
> individual components and use the Starling display list as you go.  You
> might have to create a new version of UIBase (and possible other classes)
> to use the starling display list instead.
>
> And theoretically, for each of these starling based classes, you could have
> the COMPILE::JS versions that do the same/similar thing on Canvas/WebGL.
> Something along the lines of https://github.com/matrix3d/spriteflexjs
>
> Just a thought.  I might be missing something big here.
>
> Thanks,
> Om
>
> On Tue, Mar 1, 2016 at 1:35 PM, Alex Harui <aharui@adobe.com> wrote:
>
> > I don't know what Josh did to MXMLC to get it to work for
> > Starling/Feathers.  I have encouraged him in the past to try to work
> > directly with the Falcon output.  IMO, MXMLC should be abandoned.
> >
> > Falcon supposedly has no real ties to any particular ActionScript
> > framework.  MXMLC generated code that expected the Flex SDK to be around.
> >
> > Maybe the best place to start is with a simple Starling/Feathers app
> > written with some MXML and AS.  Run it through Falcon with
> > -mxml-children-as-data and see what you get.  It won't run right away,
> but
> > will give us tangible issues to discuss.  In theory, you won't need to
> > touch any of the JBurg stuff at all.  The MXML reduction does not use
> > JBurg except for any AS code in event handlers and script blocks.
> >
> > What Falcon currently does is add one method and a few new properties to
> > the subclass.  So for some MXML like
> >
> > ---- MyApp.mxml ----
> > <StarlingApp width="900" height="600">
> >   <FeathersComponent id="foo" label="bar" />
> > </StarlingApp>
> > ---- MyApp.mxml ----
> >
> > The effective output (because there is no generated AS output from
> Falcon)
> > is something like:
> >
> > public class MyApp extends StarlingApp
> > {
> >    public function MyApp()
> >    {
> >         super();
> >         generateMXMLAttributes([2, "width", false, 900, "height", false,
> > 600]);
> >    }
> >
> >    override public function get MXMLDescriptor():Array
> >    {
> >        return [1, FeathersComponent, 2, "id", false, "foo", "label",
> > false, "bar"];
> >    }
> > }
> >
> > IOW, any base-class for an MXML file must support:
> >
> > public function generateMXMLAttributes(data:Array):void
> >
> > public function get MXMLDescriptor():Array;
> >
> >
> > Another property called mxmlsd is added for state-dependent nodes.  Not
> > sure if you will need that.
> >
> > There might even be a better way to do this, and better names.  The
> reason
> > it is this way is because I think it is better to have some requirements
> > on the base classes of the framework rather than have the output assume
> > other kinds of lifecycle calls: addElement vs addChild, when to
> > instantiate child nodes, etc.  By passing in MXML as data, the framework
> > gets to decide when to actually apply properties, map them to different
> > things, etc.
> >
> > HTH,
> > -Alex
> >
> > On 3/1/16, 9:40 AM, "Michael Schmalle" <teotigraphixllc@gmail.com>
> wrote:
> >
> > >Would I even need to fork it?
> > >
> > >I mentioned to Josh that I use MXML and Feathers extensively for these
> > >audio apps I am about to release on Android which means I have a high
> > >stake
> > >in the tech at the moment.
> > >
> > >That tinkerer side of me feels I could do something about this but I am
> at
> > >a loss of what I need to do to get the ball rolling.
> > >
> > >If I could get this project to work, this would be huge for the project
> > >since the Falcon compiler could actually start to be used in production.
> > >It
> > >also means I would have a monetary reason to be able to contribute to
> the
> > >development and learning deeper of the compiler.
> > >
> > >Alex, I need some advice man. :) Where would I even begin?
> > >
> > >Below is what I posted on Josh's Feathers SDK issue, just me talking to
> > >myself.
> > >
> > >Mike
> > >
> > >"
> > >
> > >I'm putting this here just so if anybody else reads it and wants to
> chime
> > >in.
> > >
> > >Background; I have worked extensively with the Falcon compiler mainly in
> > >creating/writing the FalconJX compiler FlexJS uses to cross compile
> > >AS/MXML
> > >to JS.
> > >
> > >The problem I see is that I wrote a traversing framework that was a
> > >visitor
> > >and walker implementation which was an abstraction outside of the actual
> > >AST Falcon produces when it parses AS3.
> > >
> > >The actual MXML compiler uses JBurg and is completely outside of my
> > >knowledge base. I don't off the top of my head know of any hooks to
> extend
> > >MXML generation or even how to start.
> > >
> > >I do understand "what" the original compiler does as far as setting up
> AS
> > >to be compiled again so the theory is there for me but I am totally
> > >lacking
> > >in the vision from start to end of what I need to do to get Falcon to
> > >produce different byte code since there is no code generation pass.
> > >
> > >Anyway, I think this could be HUGE for Starling and Feathers if it could
> > >be
> > >done since then we could add a whole bunch of specific things that could
> > >enhance the dynamic nature of constructing a Starling/Feathers
> > >mobile/desktop app."
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message