【发布时间】:2010-08-29 20:11:30
【问题描述】:
我正在尝试在数组中添加一个 MovieClip 的实例。 House 类内部是一个名为 HouseObjects 的属性。在该数组中,我创建了一个 Comp 和一个 Light 类。影片剪辑通过链接动态放置在舞台上。影片剪辑也充当“切换按钮”。如果按钮状态为ON,则值为1。如果按钮状态为OFF,则值为0。
如果值为 1,我试图在 onList 数组中添加 MovieClip 实例。该数组中将包含按钮状态为 ON 的所有实例。
我创建了一个名为 objSelect 的属性。
var objSelect:Object;
该变量保存选定的 currentTarget。我正在尝试将它传递给function trackItems,以便根据按钮状态在 onList 数组中推送/弹出它。
我收到此行的错误: onList.pop(objSelect); 参数数量不正确。预计不超过 0。
public class House extends MovieClip
{
var HouseObjects:Array = new Array();
var onList:Array = []; // instances added to this array that have a bstatus ON
var power:int; // holds value of individual House Objects
var bstate:int; // 0 or 1 (ON or OFF)
var bstatus:int;
var userInput:int; // stores user data (of selected data);
//holds value of e.currentTarget.power
var currentPower:int; // stores current power
var objSelect:Object;
public function House()
{
// Instances are MovieClip "toggle buttons"
HouseObjects[0] = new Comp(); // creates instance of Comp
HouseObjects[1] = new Light(); // creates instance of Light
}
function toggleClick(e:MouseEvent) {
// go to appropriate frame
if (e.currentTarget.currentFrame == 2)
{
e.currentTarget.gotoAndStop(3);
e.currentTarget.bstate = 1;
}
if (e.currentTarget.currentFrame == 4)
{
e.currentTarget.gotoAndStop(1);
e.currentTarget.bstate = 0;
}
bstatus = e.currentTarget.bstate;
objName = e.currentTarget.name;
trackItems(objSelect, bstatus);
} // end of function toggle click
function trackItems(objSelect:Object, bstatus:int):void
{
if (bstatus == 0) {
// remove objSelect from Array onList
} else if (bstatus == 1) {
onList.push(objSelect);
//add to Array onList
}
}
// function called when user clicks on update button
function updateStage():void
{
for (var i:int = 0; i<=onList.length;i++) {
addChild(onList[i]);
}
}
}
【问题讨论】:
-
我猜 pop 只是从列表末尾删除了该项目。你的意思是推?
-
@akonsu 取决于对象的状态(开/关)——我需要将其从阵列中推出或弹出。如果对象的状态是 ON--POP(添加到数组),如果是 OFF--PUSH(从数组中删除)。
标签: flash arrays actionscript-3 dynamic instance