Any particular reason the TextButton instance is displayed using this.addChild(button) instead of a button.addToParent(this) ?
On Mon, Jan 28, 2013 at 11:52 PM, Om <bigosma...@gmail.com> wrote: > That worked. Thanks! > > Om > > > On Mon, Jan 28, 2013 at 6:22 PM, Alex Harui <aha...@adobe.com> wrote: > >> And you will need to update MXMLDataInterpreter.as from SVN. >> >> >> On 1/28/13 5:21 PM, "Alex Harui" <aha...@adobe.com> wrote: >> >> > OK, here it is: >> > >> > FlexJSTest.as: >> > package >> > { >> > import controllers.MyController; >> > >> > import flash.display.Sprite; >> > import flash.text.TextField; >> > >> > import models.MyModel; >> > >> > import org.apache.flex.core.Application; >> > >> > public class FlexJSTest extends Application >> > { >> > public function FlexJSTest() >> > { >> > valuesImpl = new MySimpleValuesImpl(); >> > model = new MyModel(); >> > model.labelText = "Hello World!"; >> > initialView = new MyInitialView(); >> > controller = new MyController(this); >> > } >> > >> > private var controller:MyController; >> > } >> > } >> > >> > MyInitialView.as: >> > package >> > { >> > import flash.events.Event; >> > >> > import org.apache.flex.binding.SimpleBinding; >> > import org.apache.flex.core.ViewBase; >> > import org.apache.flex.html.staticControls.Button; >> > import org.apache.flex.html.staticControls.Label; >> > import org.apache.flex.html.staticControls.TextButton; >> > >> > public class MyInitialView extends ViewBase >> > { >> > public function MyInitialView() >> > { >> > super(); >> > } >> > >> > override public function initUI(model:Object):void >> > { >> > super.initUI(model); >> > lbl = new Label(); >> > lbl.addToParent(this); >> > lbl.initModel(); >> > lbl.x = 100; >> > lbl.y = 25; >> > var sb:SimpleBinding = new SimpleBinding(); >> > sb.setDocument(this); >> > sb.destinationPropertyName = "text"; >> > sb.sourceID = "applicationModel"; >> > sb.eventName = "labelTextChanged"; >> > sb.sourcePropertyName = "labelText"; >> > lbl.addBead(sb); >> > lbl.initSkin(); >> > >> > var btn:TextButton = new TextButton(); >> > addChild(btn); >> > btn.initModel(); >> > btn.text = "OK"; >> > btn.x = 100; >> > btn.y = 75; >> > btn.addEventListener("click", clickHandler); >> > btn.initSkin(); >> > } >> > >> > public var lbl:Label; >> > >> > private function clickHandler(event:Event):void >> > { >> > dispatchEvent(new Event("buttonClicked")); >> > } >> > } >> > } >> > >> > >> > On 1/28/13 3:41 PM, "Alex Harui" <aha...@adobe.com> wrote: >> > >> >> OK, I'll put together the AS version of the app. >> >> >> >> >> >> On 1/28/13 3:35 PM, "Om" <bigosma...@gmail.com> wrote: >> >> >> >>> On Sun, Jan 27, 2013 at 11:20 PM, Alex Harui <aha...@adobe.com> >> wrote: >> >>> >> >>>> >> >>>> >> >>>> >> >>>> On 1/27/13 10:50 PM, "Om" <bigosma...@gmail.com> wrote: >> >>>> >> >>>>>>> But they dont seem to match up. Can you please respond with how >> the >> >>>> mxml >> >>>>>>> would look when redone as a pure actionscript file? >> >>>>>>> >> >>>>>> There are two possible answers to this question. One is for the >> >>>> question: >> >>>>>> what would the generated AS for the MXML file look like? It >> would look >> >>>>>> somewhat like the FlexJSTest.as that you found, but it is a bit >> >>>> different >> >>>>>> because when I finally got the compiler working it was easier to >> change >> >>>>>> some >> >>>>>> of the 'generated' code a bit. If you are really interested, I >> will >> >>>> try to >> >>>>>> hand-code it. >> >>>>>> >> >>>>>> >> >>>>> This would be good. I played my hand around hand-coding based on >> this >> >>>> wiki >> >>>>> note [1] >> >>>>> But I would rather see your version. >> >>>> I'm not sure why you want to be hand-coding AS versions of MXML >> files. >> >>>> >> >>>>> >> >>>>> >> >>>>>> The other answer is for the question: How would you write this app >> in >> >>>>>> ActionScript? If I were to do it, it would not use the data array >> at >> >>>> all, >> >>>>>> it would call new Button and new Label and set properties and add >> event >> >>>>>> handlers. >> >>>>>> >> >>>>>> -- >> >>>>> >> >>>>> >> >>>>> I am curious how this would work behind the scenes. But I am not >> in a >> >>>>> hurry to look at the implementation details. >> >>>>> >> >>>>> A couple other questions while I have your attention: >> >>>>> >> >>>>> Will the FlexJSTest_again app compile with the current mxmlc? I >> saw your >> >>>>> note in the wiki that says that it wont. Is there any way to make >> it >> >>>> work? >> >>>> The status page supercedes the original wiki page. >> >>>> FalconJS converts FlexJSTest.mxml to FlexJSTest.js. Falcon >> (assuming you >> >>>> set the mxml.children-as-data flag) will convert FlexJSTest.mxml to a >> >>>> running SWF. >> >>>>> >> >>>>> I have hooked up the falcon compiler to my flash builder (4.6) as an >> >>>>> external run tool. The app compiles fine, but the IDE keeps showing >> >>>>> errors. Any way I can jerry rig Flash Builder to use the Falcon >> mxmlc? >> >>>> I haven't tried. I assume you can swap out the original MXMLC >> compiler for >> >>>> the Falcon JARs. >> >>>> >> >>>>> >> >>>>> I do have Flash Builder 4.7 installed. I am willing to switch if >> that >> >>>>> would make this process any simpler. >> >>>>> >> >>>>> Sorry for so many questions. I am trying to wrap my head around all >> >>>> this. >> >>>>> My end goal here is to churn out Stage3D based Button and Label >> classes. >> >>>>> I need to first set up everything so that I can work without >> having to >> >>>>> jump through hoops to compile every code change I make. >> >>>> If that's your goal, I would skip the MXML part for now and build >> out a >> >>>> simple test app in ActionScript. Then you can do it all in either >> version >> >>>> of FlashBuilder with the Apache Flex SDK and its MXMLC. >> >>>> >> >>>> I think FlexJSTest.as would look something like this: >> >>>> >> >>>> public class FlexJSTest extends Application >> >>>> { >> >>>> public function FlexJSTest() >> >>>> { >> >>>> model = new MyModel(); >> >>>> model.labelText = "Hello World!"; >> >>>> valuesImpl = new MySimpleValuesImpl(); >> >>>> initialView = new MyInitialView(); >> >>>> controller = new MyController(); >> >>>> } >> >>>> >> >>>> private var controller:MyController; >> >>>> public var model:MyModel; >> >>>> } >> >>>> >> >>>> And MyInitialView.as would look something like this: >> >>>> >> >>>> public class MyInitialView extends ViewBase >> >>>> { >> >>>> public function MyInitialView() >> >>>> { >> >>>> super(); >> >>>> } >> >>>> >> >>>> override public function initUI(model:Object):void >> >>>> { >> >>>> super.initUI(model); >> >>>> lbl = new Label(); >> >>>> lbl.addToParent(this); >> >>>> ... >> >>>> } >> >>>> >> >>>> public var lbl:Label; >> >>>> >> >>>> private function clickHandler(event:Event):void >> >>>> { >> >>>> dispatchEvent(new Event("buttonClicked")); >> >>>> } >> >>>> >> >>>> But I haven't tried it. If you get stuck trying to figure it out, I >> will >> >>>> take a look on Monday. You might need to wait for the initialize >> event >> >>>> before setting up the four instances in the Application's >> constructor. >> >>>> >> >>>> >> >>> Tried it. After fixing a few errors (ex. namespace mismatch because >> >>> controller, model etc. are already defined in Application.as, etc.) Am >> >>> stuck pretty bad. I see some inconsistencies in how the type of model >> >>> (Object vs. IBeadModel) The app compiles fine but I dont see a >> label on >> >>> the screen. >> >>> >> >>> I see a comment in Label.as that the view needs to be swapped out, >> not sure >> >>> what to make of it. >> >>> >> >>> It would be nice to have your original AS version so that I have a >> good >> >>> starting point in understanding this framework. >> >>> >> >>> Thanks, >> >>> Om >> >> -- >> Alex Harui >> Flex SDK Team >> Adobe Systems, Inc. >> http://blogs.adobe.com/aharui >> >> >