如果我理解正確,那麼是的,這是可能的。你是「調用組件」的術語是非標準的;但我認爲你想用ActionScript代替MXML創建組件。您可以使用ActionScript完成MXML的任何操作。
你有正確的想法;你幾乎都在那裏;我會改變一些事情。首先,在ActionScript中,您將導入該類;你不會參考MXML命名空間,在概念上是這樣的:
import com.myPackage.msns;
在你的腳本塊中。
當您創建組件時,您需要創建一個指向它的變量。這將對應於MXML中的id字段。您的ns1:msns:component
的語法可能會導致編譯器錯誤。但是,您可以創建這樣的組件:
var msns :component = new component()
我在這裏會提到通常的慣例是大寫組件名稱。不過,您的小寫字母在語法上不是錯誤的。
然後設置組件的屬性,你已經做:
msns.x = 5
msns.x = 5
最後 - 這是你錯過了一步 - 必須將新組件添加到一個容器中。如果您正在處理Spark容器,則可以使用addElement,如果您使用的是MX容器,則可以使用addChild。因爲在你提供你父容器是火花應用程序的例子,我將使用的addElement:
this.addElement(msns);
所以,你的代碼塊將被重新寫成這樣:
protected function mmshakkoutab(event:MouseEvent):void{
var msns:component = new component();
msns.x = 5
msns.x = 5
this.addElement(msns);
}
你應該考慮閱讀的一件事是Flex Component LifeCycle。每個Flex組件都會通過它;並且某些事情是按照某個特定的順序完成的。對於創建兒童,您最好是擴展createChildren(),特別是如果您希望將組件創建爲應用程序標記初始設置的一部分。
我得+1這個即使我們在寫作的同時我們各自的答案。 :-) – JeffryHouser 2013-02-21 03:38:10
謝謝你們,明天我會到達工作的第一件事我會試試看:D – 2013-02-21 13:58:03