0

我在包含嵌套函数的函数之外有一些 MouseEvent 侦听器,这些嵌套函数需要使用附加到侦听器的函数。

button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver); 

function navigation (): void {

    if statements;

    function buttonOver(event:MouseEvent):void {
        movieclip.play();
    }
}

我不断收到“1120:未定义属性 buttonOver 的访问”错误。我知道这是因为 EventListener 在“导航”函数之外,但我需要稍后其他函数访问它。我对这一切都错了吗?

4

5 回答 5

1

那是行不通的。我不认为你应该嵌套函数。为什么不使用可以从其他类/实例访问的类?

于 2012-03-12T18:01:21.933 回答
1

忘记嵌套和匿名函数。并且忘记在框架中编写代码。您可以在不使用它们的情况下做任何您想做的事情。

于 2012-03-12T19:40:55.003 回答
0

我不确定为什么首先需要嵌套函数。没有嵌套,一切都会容易得多。

button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver); 

function navigation (): void {

    if statements;
}
function buttonOver(event:MouseEvent):void {
    movieclip.play();
}
于 2012-03-12T18:06:36.493 回答
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();
}
于 2012-03-12T20:19:16.263 回答
0

正如其他答案所提到的,您的嵌套函数仅限于定义它的函数的范围。您尝试在该函数之外访问它会引发错误。下面的相关 Adob​​e 文档:

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f54.html

将嵌套函数移到嵌套函数之外,或将侦听器更改为调用navigation并要求navigation调用buttonOver

于 2012-03-12T20:35:39.153 回答