2011-11-04 49 views
0

我通過Flash CS5構建一個swc文件,其中包含一些類似於TextInput,Label的接口組件。 然後我在一個flex程序中使用它。如何使用中繼器爲swc組件

但我遇到了這個問題,當我想要使用這個組件的Flex中繼器。

以下是我自己在使用Flash CS的swc文件中定義的組件。

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> 

它工作得很好。

但是,如何直接在mxml中使用txt1?像這樣:

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

我知道它不起作用,但我想用中繼器來創建一些類似的MyWindow,它需要綁定dataProvider。我寫了這樣的flex代碼:

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

但它不能工作。

有誰知道如何使它工作?謝謝。

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

更新代碼,multiWindow完整代碼是:

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組件壽命循環和佈局系統,它可能不會很好。

+0

你能解釋一下關於如何實現IUIComponet的更多細節嗎?在Flash或Flex中做到這一點?在我的flex代碼中添加,就像你的示例一樣,但它仍然不起作用。 – Wei

+0

你是什麼意思的「不工作」?你可以發佈你的Flash符號的文檔類的代碼嗎? –

+0

艾米,我已經更新了代碼,這是您的Flash符號的文檔類嗎? – Wei