On Feb 9, 2014 10:44 PM, "Alex Harui" <aha...@adobe.com> wrote: > > > > On 2/9/14 9:58 PM, "DarkStone" <darkst...@163.com> wrote: > > >Hi all, > > > >I've just skimmed through the FlexJS asdoc: > >http://people.apache.org/~pent/asdoc-flexjs/ > > > >And I haven't found SkinnableComponent, GroupBase, Group & DataGroup, > >Skin, IVisualElement, etc. These are the core featured classes of Flex > >Spark architecture. > > > >In flex, by extending the SkinnableComponent class, defining SkinParts, > >SkinStates, and design the component's skin by extending the Skin class, > >using markup language (mxml) and css to do the layouts and styles, these > >are of the highly efficiency feature of Flex Spark architecture. > > > >I fully understand that FlexJS has just started, it has a long way to go, > >I'm so grateful to see it. I just wanna know will SkinnableComponent and > >related Spark architecture features be supported by FlexJS in the future? > > > >Thanks for any replies! > Hi. Unlike the Flex SDK, where a particular component set was supposed to > be the "only one", FlexJS should be able to support many different > component sets. The one we are working on right now that is in ASDoc is > designed to be the most lightweight component set that maps cleanly from > the HTML/JS/CSS stack to Flash, while trying to keep as much of the "feel" > of Flex. That component set will not support Spark Skinning as it is my > estimation that Spark Skinning is not going to efficiently work in > HTML/JS/CSS. I expect that someday, someone will generate a component set > that tries to better emulate the Flex SDK Spark components, but would > expect the resultant apps will be fatter and slower. > > Yes, this means you have to learn a new skinning workflow to use the > lightweight FlexJS component set, but many of you have proven you could > learn Spark Skinning after doing MX skinning, and I think there are > benefits to how we are handling custom visuals in the FlexJS "basic" > components. > > A Spark Skin is often a composition of subcomponents. Even Button's skin > composes a Label. In FlexJS the Button converts directly to the HTML > button, and it does not support that kind of complex custom visuals. So, > in the FlexJS basic components, there is are separate model, view, and > controller beads, and the view holds that composition of subcomponents, if > any. Then CSS is used to alter the visuals in the subcomponents. It is a > goal to make that all map cleanly to shadow DOMs in HTML5/CSS3. > > This highlights an important distinction about this basic component set. > The goal is to take HTML and/or HTML5 constructs and map them to Flash, > not the other way around, so that there is as little "emulation" going on > in the final HTML/JS/CSS output. > > FWIW, Spark Skinning had some flaws, mainly around the > hostComponent/skinPart piece. IMO, it is not a good idea for the host > component to know about a set of skin parts in the Skin. I believe this > was a performance optimization at the sacrifice of good design. This flaw > was further compounded by the Spark component containing the model (the > public properties). Really, the model should not know anything about the > view. This limitation resulted in the "icon button" problem where it > wasn't possible to add a per-instance Icon to the Skin without subclassing > the host component. In FlexJS, you can simply swap in an extended model > and an extended skin, set up your CSS and it just works. > > In really complex Spark skins, it means you can't defer creation of skin > parts without making them optional. In FlexJS, you should be able to do > just about anything you want as long as the model, view, and controller > agree. > > The "mantra" is this: If you have an existing app of 10K lines of MXML > and 100K lines of AS, you will have to recode some of it, but should be > much less than recoding all of it to some other JS framework. And once > you do get it recoded, the output will have as little overhead over having > rewritten it in another JS framework as possible. > > Now, the baseline for FlexJS is IE8/HTML, not HTML5. Omprakash has been > looking at FXG->SVG conversion for those of you who can assume HTML5 > browsers as the baseline.
It is still my goal to try and build a FXG to SVG conversion subsystem in FlexJS. From my experiments so far, I have proven that it is possible to have close to 100% rendering fidelity between FXG and SVG. I may need help plugging it into FlexJS in a seamless way. And in that case, being able to cross-compile > MXMLG in an existing Spark Skin starts to become interesting, but again, > I'm not sure what to do about subcomponents that might be mixed in. Maybe skins won't have sub components. Not sure how that would work, though. > > But hey, this is in fact a prototype. Ideas and this kind of feedback is > quite welcome. If you have thoughts on how FlexJS can map more Flex SDK > code without having to do a lot of emulation on the JS side, definitely > let us know. > > HTH, > -Alex >