2011-11-04 3 views
0

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

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

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

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

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

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

<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

Любой компонент, который вы хотите использовать с контейнером MX, должен реализовать IUIComponent. Я считаю, что вспышка имеет встроенный в базовый класс, который вы можете расширить для использования с 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 цикла и компоновки, это может плохо работать.

+0

Не могли бы вы объяснить более подробно о том, как реализовать IUIComponet? Сделайте это во Flash или в Flex? Я добавляю в свой гибкий код, как ваш образец, но он все еще не работает. – Wei

+0

Что значит «не работает»? И можете ли вы опубликовать код для своего документа класса Flash? –

+0

Эми, я обновил код, это документ флэш-символа, который вы имеете в виду? – Wei