Как использовать повторитель для компонентов внутри SWC - PullRequest
0 голосов
/ 04 ноября 2011

Я создаю SWC-файл с помощью Flash CS5, который содержит некоторые компоненты интерфейса, такие как TextInput, Label.А затем я использую его в программе Flex.

Но я сталкиваюсь с проблемой, когда хочу использовать Flex Repeater для этого компонента.

Ниже приведен компонент, определенный мной в файле SWC с использованием Flash.CS.

package {
    import fl.controls.TextInput;
    ......

    public dynamic class MyWindow extends UIMovieClip {
        public var txt1 : TextInput;
        ......
        }
    }
}

Затем я использую его в своей программе flex следующим образом:

<local:MyWindow id="myWindow"/>
<fx:Script>
    <![CDATA[
        ......
        private function Init() : void {
            myWindow.txt1.text = "myText";
        }
        ......
    ]]>
 </fx:Script>

, она хорошо работает.

Но как я могу напрямую использовать txt1 в mxml?как это:

<local:MyWindow id="myWindow" txt1.text="myText"/>

Я знаю, что это не работает, но я хочу использовать повторитель для создания какого-то похожего MyWindow, ему нужно связать dataProvider.Я написал такой код:

<mx:VBox>
    <mx:Repeater x="10" y="10" id="multiWindow">
        <local:MyWindow txt1.text="{multiWindow.currentItem}"/>
    </mx:Repeater>
</mx:VBox>

Но он не может работать.

Кто-нибудь знает, как заставить его работать?Спасибо.

============================================================================================

Обновить код, многооконный режим завершенкод:

package {
import fl.controls.TextInput;

import mx.flash.UIMovieClip;

import flash.display.DisplayObject;
import flash.events.EventDispatcher;
import flash.display.Sprite;
import flash.display.InteractiveObject;
import flash.display.MovieClip;
import flash.display.DisplayObjectContainer;

public dynamic class MyWindow extends UIMovieClip {
    public var txt1 : TextInput;
    public var txt2 : TextInput;
    public var txt3 : TextInput;
}
}

1 Ответ

1 голос
/ 04 ноября 2011

Любой компонент, который вы хотите использовать в контейнере MX, должен реализовать IUIComponent. Я считаю, что Flash имеет встроенный базовый класс, который вы можете расширить для использования с Flex, но вы также можете просто сделать что-то вроде этого:

<mx:VBox>
     <mx:Repeater x="10" y="10" id="multiWindow">
         <mx:UIComponent>
             <local:MyWindow txt1.text="{multiWindow.currentItem}"/>
         </mx:UIComponent>
     </mx:Repeater> 
</mx:VBox>

Обратите внимание, что если вы не продумали систему жизненного цикла и компоновки Flex Component, она может не очень хорошо работать.

...