AS3 Child error



正如你即将成为我编码 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);

相关内容

最新更新