所以我有一个包含项目的清单,数组中有项目的实例名称,即动画片段。我想这样做,以便所有项目的按钮模式都成为现实。
一切都符合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;
}
}
}
}
答案 0 :(得分:1)
您的Inventory
数组是字符串的集合,而不是MovieClip。
如果这些是子显示对象的实例名称,请将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;
}
}
}
}
答案 1 :(得分: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;
}
}
}
}