我得到了一段代码:
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()
它仍然正常但我想知道为什么?
答案 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}},如果是,则添加,如果不是,则跳过。