如果我无法设置ID,如何访问MXML文档的根元素?

时间:2010-08-30 21:27:56

标签: flex flash actionscript mxml

如果我想做这样的事情:

<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>

我如何获得myCanvas(我希望myCanvas成为root用户)的句柄?

2 个答案:

答案 0 :(得分:3)

要从mxml文件中访问根节点指定的组件,可以使用this关键字。 mxml中的任何代码都在this对象的上下文中运行 - 如果您没有任何同名的局部变量,也可以省略该关键字。

this.width = myWidth;
this.height = myHeight;

关于你的第二个问题:

假设您的mxml文件名称为MyCanvas.mxml。您可以使用<ns:MyCanvas/>标记将其添加到其他组件。您可以在那里设置ID并使用它进行访问。

<ns:MyCanvas id="myCanvas"/>

内幕:

myCanvas.width = whatever;

答案 1 :(得分:1)

如果你使myWidth和myHeight可绑定,你不需要在Canvas声明中设置width =“{myWidth}”和height =“{myHeight}”。

<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>

myWidth和myHeight的任何更改都会更新Canvas的大小