Как получить доступ к корневому элементу документа MXML, если я не могу установить идентификатор? - PullRequest
0 голосов
/ 31 августа 2010

Если бы я хотел сделать что-то вроде этого:

<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 был корневым)?

Ответы [ 2 ]

3 голосов
/ 31 августа 2010

Чтобы получить доступ к компоненту, указанному корневым узлом, из файла mxml, вы можете использовать ключевое слово this.Любой код внутри mxml выполняется в контексте объекта this - вы также можете опустить ключевое слово, если у вас нет локальной переменной с таким же именем.

Допустим, имя вашего mxml-файла MyCanvas.mxml.Вы добавили бы это к другому компоненту, используя тег <ns:MyCanvas/>.Вы можете установить там идентификатор и получить к нему доступ с помощью этого.

<ns:MyCanvas id="myCanvas"/>

Внутри сценария:

myCanvas.width = whatever;
1 голос
/ 31 августа 2010

В этом нет необходимости, если вы сделаете привязки myWidth и myHeight и зададите width = "{myWidth}" и height = "{myHeight}" в объявлении Canvas.

<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

...