【问题标题】:inf actionscript 3 (as3), how to pass parameter in anonymous function?inf actionscript 3 (as3),如何在匿名函数中传递参数?
【发布时间】:2010-08-04 14:36:33
【问题描述】:

在 as3 中,我添加了事件侦听器,然后将匿名函数附加到它:

myBox.addEventListener(MouseEvent.ROLL_OVER, 功能(e:鼠标事件):无效 { Alert.show(count, '警报框'); );

现在这整段代码循环了 n 次。现在,我有 n 个 myBoxes,每当我将鼠标移到盒子上时,它都会提醒名称。但是,我看到的是每个盒子都使用了 count 的最后一个值。

如何将参数或值传递给匿名函数? (作为翻转,我相信,只需要一个变量)

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

    你需要通过执行一个函数来创建一个新的作用域:

    for (var i:int = 0; i<10; i++)
    {
        (function(count:int):void
        {
            myBox.addEventListener(MouseEvent.ROLL_OVER, 
                function(e:MouseEvent):void { Alert.show(count, 'Alert Box'); });
        })(i);
    }
    

    【讨论】:

      【解决方案2】:

      与依赖索引相比,获取事件的 currentTarget 并获取其中一个成员的值不是更简单(更好)吗?

      myBox.addEventListener(MouseEvent.ROLL_OVER,
      function(e:MouseEvent):void
      {
        Alert.show(UIComponent(e.currentTarget).name, 'Alert Box');
      );
      

      如果你绝对必须引用索引,你可以通过

      UIComponent(e.currentTarget).parent.getChildIndex(e.currentTarget)
      

      而且,现在我想起来了,如果您使用事件模型,您甚至根本不必将其设为匿名函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多