If I wanted to do something like this:
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
xmlns:view="com.foo.bar.view.*"
>
<mx:Script>
<![CDATA[
myWidth = 100;
myHeight = 200;
myCanvas.width = myWidth;
myCanvas.height = myHeight;
]]>
</mx:Script>
</mx:Canvas>
How would I get a handle on myCanvas (where I'd want myCanvas to be the root )?
To access the component specified by the root node from within an mxml file, you can use this
keyword. Any code inside an mxml runs in the context of this
object - you can as well omit the keyword if you don't have any local variable by the same name.
this.width = myWidth;
this.height = myHeight;
For your second question:
Let's say your mxml file's name is MyCanvas.mxml
. You'd add this to another component using <ns:MyCanvas/>
tag. You can set an id there and access it using that.
<ns:MyCanvas id="myCanvas"/>
Inside script:
myCanvas.width = whatever;
You don't need to if you make myWidth and myHeight bindable, and set width="{myWidth}" and height="{myHeight}" in the Canvas declaration.
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
width="{myWidth}"
height="{myHeight}"
xmlns:view="com.foo.bar.view.*" >
<mx:Script>
<![CDATA[
[Bindable]
private var myWidth:Number;
[Bindable]
private var myHeight:Number;
]]>
</mx:Script>
</mx:Canvas>
Any changes to myWidth and myHeight would then update the size of the Canvas