2010-08-18 66 views
0

我的閃光舞臺上有多個切換按鈕。這些切換按鈕是影片剪輯。如果用戶點擊其中一個影片剪輯,我希望能夠找到一種方法來瀏覽下面的對象 - 根據用戶點擊的內容獲取適當的值 - 並將該值存儲在名爲var powerData的新值中然後將其傳遞給一個函數來執行計算。如何從Flash中的對象(關聯數組)中獲取值並將該值重新分配給新變量?

  var houseArray:Object = {lightA:"1", 
            lightB:"1", 
            lightC: "1" 
            lightD: "1" 
            lightE: "1" 
            comp: "2" 
            tv: "3" 
            stove: "4" 
            laundry: "5"}; 

例如: 如果用戶的 「小樣」 的MovieClip 然後點擊 - >無功powerData = 2; (因爲在houseArray中:Object - > comp:「2」)

+0

上面我寫道:「...根據用戶點擊的內容獲取適當的值 - 並將該值存儲在一個名爲var powerData的新值中...」 我的意思是寫入,存儲一個新變量 - 不值 - 稱爲var powerData。 – jc70 2010-08-18 14:25:34

回答

0

您將需要在houseArray對象的屬性後命名您的MovieClips實例。在您的例子中,比較實例應該被命名爲「補償」,電視「TV」等等......

//Could also be , private var comp:Comp; 
    private var comp:MovieClip; 

    private function init():void 
    { 
     comp = new Comp(); 
     comp.name = "comp"; 
    } 

    private function mouseClickHandler(event:MouseEvent):void 
    { 
     var buttonName:String = event.currentTarget.name; 

     //since the houseArray property value is a String, the result needs 
     //to be typed as int(or Number, depending on context) 
     var powerData:int = int(houseArray[buttonName]); 

     performCalculations(powerData); 
    } 

    private function performCalculations(value:int):void 
    { 
     //your code here 
    } 

我假設你有很好的理由有性質houseArray作爲字符串...

+0

我的錯誤,我需要刪除雙引號。 houseArray中的屬性的數據類型應該是整數。 – jc70 2010-08-18 15:10:13

+0

謝謝你的回覆。響應很有幫助。使用相同的概念,我會寫var powerData:int = houseArray [e.currentTarget.name.toLowerCase()];而不是var powerData:int = int(houseArray [buttonName]); 。但我相信它遵循你展示的相同概念。 – jc70 2010-08-21 22:35:40

相關問題