【问题标题】:passing parameter with eventlistener使用事件监听器传递参数
【发布时间】:2011-05-24 16:34:28
【问题描述】:

我有以下功能:

private function createContent(slideData:Object):void 
  {
   transitions = new Transitions();
   if (slide){
   transitions.applyTransition(slide);
   transitions.addEventListener(Transitions.TRANSITION_COMPLETE, completeHandler);

   }
   slide  = new Slide(slideData);
    addChild(slide);
    transitions.applyTransition(slide);
  }
  private function completeHandler(e:Event):void{
   removeChild(slide);
  }

我在第一个函数中调度了一个事件,当涉及到完整处理程序时,我想从第一个函数中删除幻灯片,但它无法识别。我怎样才能通过事件监听器传递幻灯片,以便我可以在 completeHandler 中删除它?(我有几个幻灯片实例,所以我必须通过它才能获得正确的实例)。 谁能帮帮我?

【问题讨论】:

标签: actionscript-3


【解决方案1】:

如果变量不是动态的,您可能可以使用匿名函数来传递变量。

transitions.addEventListener(Transitions.TRANSITION_COMPLETE, function (evt:Event) {
    completeHandler(evt, variable1, variable2);
});

function completeHandler(evt, catch1, catch2) {
    //do stuff
}

【讨论】:

    【解决方案2】:

    以下是将幻灯片传递给事件侦听器的几种方法。

    • 1/ 作为事件的属性

      //Assuming that:
      // 1/ you create a custom Event class that takes two parameters
      //    type: String
      //    slide:Slide
      // 2/ that you have assigned the slide object to a variable in the
      // applyTransition method , which you can then assign to the event
      transitions.dispatchEvent( new TransitionEvent( 
                                  Transitions.TRANSITION_COMPLETE , slide ) );
      
    • 2/ 作为调度程序的属性

      //Assuming that:
      // you assign the slide object to a variable in the
      // applyTransition method
      private function completeHandler(e:Event):void{
        var target:Transitions = event.currentTarget as Transitions;
        removeChild(target.slide);
      }
      

    【讨论】:

      【解决方案3】:

      如果您愿意,可以使用幻灯片的名称属性。

      (虽然您还没有描述实际声明幻灯片的方式和位置 - sprite、mc 等)

      使用名称属性:

      将幻灯片设置为slide.name = "instanceName"(在您的第一个函数中)

      获取幻灯片为getChildByName("instanceName")(在您的第二个函数中)


      您也可以:

      • 将幻灯片设置为类成员, 可通过所有功能访问 班上。
      • 将每张幻灯片的引用添加到 作为类可用的数组 其所有功能的成员。

      【讨论】:

        猜你喜欢
        • 2016-08-13
        • 1970-01-01
        • 2019-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-17
        相关资源
        最近更新 更多