问题
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 )?
回答1:
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;
回答2:
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
来源:https://stackoverflow.com/questions/3604354/how-do-i-access-the-root-element-of-an-mxml-document-if-i-cant-set-an-id