正如你即将成为我编码 as3 相当陌生...当我尝试删除孩子时,我总是遇到这些错误......
我现在不使用类,只是使用 Include 方法。
类型错误: 错误 #1006: 删除子项不是一个函数。谁能向我解释如何正确使用它?如果这不是一个如此广泛的问题。
var children = 0;
function pineClick(e:MouseEvent):void {
var chopBtn:MovieClip = new MenuItem ;
var shakeBtn:MovieClip = new MenuItem ;
var pineCancelBtn:MovieClip = new MenuItem ;
if (chopMode == false && children <1) {
children++;
addChild(chopBtn);
chopBtn.x = 250;
chopBtn.y = 140;
chopBtn.MenuItemText.text = "Chop";
addChild(shakeBtn);
shakeBtn.x = 250;
shakeBtn.y = 200;
shakeBtn.MenuItemText.text = "Shake";
addChild(pineCancelBtn);
pineCancelBtn.x = 250;
pineCancelBtn.y = 260;
pineCancelBtn.MenuItemText.text = "Cancel";
pineCancelBtn.addEventListener(MouseEvent.CLICK, pineCancelClick);
chopBtn.addEventListener(MouseEvent.CLICK, pineChopClick);
function pineChopClick(e:MouseEvent):void {
var length:uint = inventoryItems.length;
for (var i:uint= 0; i<length; i++) {
if (inventoryItems[i] == "Hatchet") {
itemEquipped = true;
}
if (itemEquipped == true) {
chopMode = true;
removeChild(shakeBtn); /////error here//////
removeChild(pineCancelBtn); /////////////////////
removeChild(chopBtn); /////////////////////
} else {
itemEquipped = false;
}
}
if (itemEquipped == false) {
Output.text = insertTextBefore("You need a Hatchet to cut this.");
}
}
function pineCancelClick(e:MouseEvent):void {
chopMode = false;
removeChild(chopBtn);
removeChild(shakeBtn);
removeChild(pineCancelBtn);
children = 0;
}
}
if (chopMode == true) {
removeChild(chopBtn);
removeChild(shakeBtn);
}
}
您的问题是范围的直接问题。由于嵌套了函数,因此内部函数已丢失范围。
这正是我们从不嵌套函数的原因。
如果你取消嵌套你的函数,你的问题就会消失
或者你可以试试这个。
MovieClip(root).removeChild(XXXXX)
这有点笨拙,但这应该可以解决问题
if(shakeBtn.parent != null)
shakeBtn.parent.removeChild(shakeBtn);