AS3儿童错误

时间:2014-03-05 21:33:17

标签: actionscript-3 flash actionscript removechild addchild

因为你将要成为我对编码的新手... ...当我试图移除孩子时,我总是会遇到这些错误...
我现在不使用类,只使用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);
}
}

2 个答案:

答案 0 :(得分:0)

您的问题是范围的直接问题。因为嵌套函数,内部函数已经失去了作用域。
这正是我们永远不会嵌套功能的原因。
如果你取消功能,你的问题就会消失

或者你可以试试这个。

MovieClip(root).removeChild(XXXXX)

答案 1 :(得分:0)

这有点hacky,但这应该做的伎俩

if(shakeBtn.parent != null)
    shakeBtn.parent.removeChild(shakeBtn);