因为你将要成为我对编码的新手... ...当我试图移除孩子时,我总是会遇到这些错误...
我现在不使用类,只使用Include方法
TypeError:错误#1006:removeChild不是函数。
任何人都可以向我解释如何正确使用它?如果这不是一个如此广泛的问题。
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);
}
}
答案 0 :(得分:0)
您的问题是范围的直接问题。因为嵌套函数,内部函数已经失去了作用域。
这正是我们永远不会嵌套功能的原因。
如果你取消功能,你的问题就会消失
或者你可以试试这个。
MovieClip(root).removeChild(XXXXX)
答案 1 :(得分:0)
这有点hacky,但这应该做的伎俩
if(shakeBtn.parent != null)
shakeBtn.parent.removeChild(shakeBtn);