How do I access the root element of an MXML document if I can't set an id?

夙愿已清 提交于 2019-12-12 04:04:45

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!