我正在尝试为按钮数组中的所有按钮添加一个事件监听器。我可以在循环中使它们成为按钮但是当我尝试添加事件监听器时会给我这个错误:
TypeError: Error #2007: Parameter listener must be non-null.
at flash.events::EventDispatcher/addEventListener()
at Main()
我可以将此事件添加到另一个阵列,但不是这个。我把这些按钮放在舞台上,并给我们实例名称,我在我的文件中指的是。我在学校学习AS3,所以这可能是一个非常明显的问题,但我没有资格调试我的代码:S谢谢你的帮助。
//array of buttons and making them buttons
var buttons:Array = [armButton, lobeButton, beakButton, crotchButton, earButton, hairButton, legButton, shoulderButton, spineButton, tailButton, tearButton, eyeButton];
for(var b:int = 0; b<buttons.length; b++){
buttons[b].buttonMode = true;
buttons[b].addEventListener(MouseEvent.CLICK, clickMe);
}
function clickMe(e:MouseEvent):void{
trace("hello");
}
答案 0 :(得分:0)
检查定义和参数部分中“clickMe”功能的名称,确保使用完全相同的字符(某个字符有时会被误认为是另一个代码表中的字符)。发生此错误是因为“clickMe”表达式在执行循环时为空。
var buttons:Array = [armButton, lobeButton, beakButton, crotchButton, earButton, hairButton, legButton, shoulderButton, spineButton, tailButton, tearButton, eyeButton];
for(var b:int = 0; b<buttons.length; b++){
buttons[b].buttonMode = true;
// what is the output of the following expression?
trace(clickMe) // should be "function Function() {}"
buttons[b].addEventListener(MouseEvent.CLICK, clickMe);
}
function clickMe(e:MouseEvent):void{
trace("hello");
}
答案 1 :(得分:0)
在你的addEventListener行中,clickMe为null。
我怀疑我们没有看到所有代码。该代码是否在同一个文件中?或者你只剪切/粘贴了你认为重要的部分?