2010-08-18 62 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

相关问题