错误#1006:值不是函数。通过movieclip.Function创建一个函数并在eventlistener中调用它

时间:2014-03-02 16:55:49

标签: actionscript-3

我得到了一段代码:

gameholder.addChild(crocodile);
crocodile.Function = this["croccheck"];
crocodile.addEventListener(MouseEvent.CLICK,animalclick);
private function animalclick(evt:Event):void
    {
        if(!evt.currentTarget.addEventListener(Event.ENTER_FRAME,evt.currentTarget.Function))
        {
            evt.currentTarget.name.addEventListener(Event.ENTER_FRAME,evt.currentTarget.Function);
        }
    }
private function croccheck(evt:Event):void
    {
        if(evt.currentTarget.currentLabel == Info.ANIMALS_READY)
        {
            evt.currentTarget.gotoAndPlay(Info.ANIMALS_ACT + "1");
            evt.currentTarget.removeEventListener(Event.ENTER_FRAME,evt.currentTarget.Function);
        }
    }

即使我收到此错误

TypeError:错误#1006:value不是函数。     在main / animalclick()

它仍然正常但我想知道为什么?

1 个答案:

答案 0 :(得分:0)

addEventListener()返回void,您在animalClick中检查其返回值。这显然是假的,因此第二个addEventListener调用是针对name属性的,而String属性又是addEventListener,因此没有animalClick作为函数。因此,您应该将private function animalclick(evt:Event):void { if(evt.currentTarget.Function) { evt.currentTarget.addEventListener(Event.ENTER_FRAME,evt.currentTarget.Function); } } 功能清理为:

Function

在这里,您要检查是否有可以添加的{{1}},如果是,则添加,如果不是,则跳过。