我在函数之外有一些MouseEvent侦听器,它包含需要使用附加到侦听器的函数的嵌套函数。
button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver);
function navigation (): void {
if statements;
function buttonOver(event:MouseEvent):void {
movieclip.play();
}
}
我一直收到“1120:访问未定义属性buttonOver”错误。我知道这是因为EventListener不在函数“navigation”中,但我需要稍后通过其他函数访问它。我是不是错了?
答案 0 :(得分:1)
那不行。我不认为你应该嵌套功能。为什么不使用可以从其他类/实例访问的类?
罗布
答案 1 :(得分:1)
忘记嵌套和匿名函数。而且忘了在框架中编写代码。您可以在不使用它们的情况下完成所需的一切。
答案 2 :(得分:0)
我不确定为什么你首先需要嵌套函数。没有嵌套,一切都会轻松得多。
button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver);
function navigation (): void {
if statements;
}
function buttonOver(event:MouseEvent):void {
movieclip.play();
}
答案 3 :(得分:0)
我不确定但是您可能希望根据某些条件添加然后删除事件监听器?
当我看到他们试图嵌套事件处理程序时,这对于初学者来说是最常见的错误。function navigation (): void {
if (somethingTrue){
button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver);
else if(somethingElseTrue){
button1.removeEventListener(MouseEvent.ROLL_OVER, buttonOver);
}
}
function buttonOver(event:MouseEvent):void {
movieclip.play();
}
答案 4 :(得分:0)
正如其他答案所提到的,您的嵌套函数仅限于它所定义的函数的范围。您在该函数之外访问它的尝试将引发错误。以下相关的Adobe文档:
将嵌套函数移动到嵌套函数之外,或更改监听器以调用navigation
并让navigation
调用buttonOver