2009-12-10 118 views
0

我在Flex中有一些簡單的功能,我想將我的一個變量發送到我的應用程序中使用的所有組件...問題是,有很多組件在我的應用程序,我不知道如何引用我的組件的ID ...基本上,有一個更簡單的方法來做到這一點;創建循環發送變量到Flex中的其他組件

private function preloadStuff():void{ 

    // populating of bulkLoader var 

    var preloaderItemsList:XMLListCollection = new XMLListCollection(preloaderItems.children()); 
    var item:XML; 
    for each (item in preloaderItemsList){ 
     bulkLoader.add(item.path.toString(), {id:item.swfid.toString()}); 
    } 
    bulkLoader.addEventListener(BulkLoader.PROGRESS, bulkProgress); 
    bulkLoader.addEventListener(BulkLoader.COMPLETE, bulkComplete); 
    bulkLoader.start(); 

    // sending bulkLoader to all of components 
    // component ids are _01, _02, _03, etc. 

    _01.bulk = bulkLoader; 
    _02.bulk = bulkLoader; 
    _03.bulk = bulkLoader; 
    _04.bulk = bulkLoader; 
    _05.bulk = bulkLoader; 
    _06.bulk = bulkLoader; 
    _07.bulk = bulkLoader; 
    _08.bulk = bulkLoader; 
    _09.bulk = bulkLoader; 
    _10.bulk = bulkLoader; 
    _11.bulk = bulkLoader; 
    _12.bulk = bulkLoader; 
    _13.bulk = bulkLoader; 
    _14.bulk = bulkLoader; 
    _15.bulk = bulkLoader; 
    _16.bulk = bulkLoader; 
    _17.bulk = bulkLoader; 
    _18.bulk = bulkLoader; 
    _19.bulk = bulkLoader; 
    _20.bulk = bulkLoader; 
    _21.bulk = bulkLoader; 
    _22.bulk = bulkLoader; 
    _23.bulk = bulkLoader; 
    _24.bulk = bulkLoader; 
    _25.bulk = bulkLoader; 
    _26.bulk = bulkLoader; 
    _27.bulk = bulkLoader; 
    _28.bulk = bulkLoader; 
    _29.bulk = bulkLoader; 
    _30.bulk = bulkLoader; 
    _31.bulk = bulkLoader; 
    _32.bulk = bulkLoader; 
    _33.bulk = bulkLoader; 
    _34.bulk = bulkLoader; 

} 

非常感謝您的幫助!

回答

1

您可以引發一個自定義事件(包含氣泡)並讓所有組件聽取它。

0

有這許多的解決方案,你可以簡單地做一個解釋,並存儲要通過槽每個實例(我認爲這是最好的方式),或者你可以實現這一點:

for (var i = 1; i <= lastId; i++) // being lastId the last id of you components 
    this["_" + (i < 10 ? "0"+i : i)].bulk = bulkLoader; 

this["property"] // is the same that this.property 

這是令人毛骨悚然,非常可怕,但它回答你的問題。