0

所以我有一个物品清单,数组有物品的实例名称,它们是电影剪辑。我想让它使所有项目的按钮模式变为真。

一切正常,直到 i.buttonMode = true。我得到这个:1119:通过静态类型 String 的引用访问可能未定义的属性 buttonMode。但是,如果我使用实例名称,则 Inv_1.buttonMode = true 之类的名称有效。

所以我猜主要的问题是,你如何遍历一个数组并将每个实例名称变成按钮?

(我也尝试过 getChildByName.(i).buttonMode = true;)但没有奏效。:S

package  {
import flash.display.*;
import flash.events.*;

public dynamic class Drag extends MovieClip {
    var Inventory:Array =  ["Inv_1", "Inv_2", "Inv_3", "Inv_4t", "Inv_5"]; 

    public function Drag():void {
        for (var i:String in Inventory){ 
            i.buttonMode = true;
            }
        }
    }

}

4

2 回答 2

1

您的Inventory数组是字符串的集合,而不是 MovieClips。

如果这些是子显示对象的实例名称,则getChildByName作为函数实现,而不是点表示法。

另请注意getChildByName返回DisplayObject,它没有定义buttonMode。将对象转换为MovieClip适当的类型。

package  {
import flash.display.*;
import flash.events.*;

public dynamic class Drag extends MovieClip {
    var Inventory:Array =  ["Inv_1", "Inv_2", "Inv_3", "Inv_4t", "Inv_5"]; 

    public function Drag():void {
        for (var i:String in Inventory) {
            MovieClip(getChildByName(i)).buttonMode = true;
            }
        }
    }
}
于 2012-05-26T04:50:11.933 回答
1

您创建了一个字符串数组,而不是影片剪辑实例。

声明您的实例名称并将它们添加到向量中:

package
{
    import flash.display.*;
    import flash.events.*;

    public dynamic class Drag extends MovieClip
    {
        private var Inv_1:MovieClip;
        private var Inv_2:MovieClip;
        private var Inv_3:MovieClip;
        private var Inv_4:MovieClip;
        private var Inv_5:MovieClip;

        public function Drag():void
        {
            var Inventory:Vector.<MovieClip> = new <MovieClip>[Inv_1, Inv_2, Inv_3, Inv_4t, Inv_5]; 

            for (var i:MovieClip in Inventory)
            { 
                i.buttonMode = true;
            }
        }
    }
}
于 2012-05-26T04:54:31.437 回答