使用eventlistener传递参数

时间:2010-12-13 13:56:03

标签: actionscript-3

我有以下功能:

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);
  }

我在第一个函数中调度一个事件,当涉及到完整的处理程序时,我想从第一个函数中删除幻灯片,但它无法识别。我如何使用eventlistener传递幻灯片,以便我可以在completeHandler中将其删除?(我有几个来自幻灯片的实例,所以我必须通过它才能拥有正确的实例)。 谁可以帮助我?

3 个答案:

答案 0 :(得分:4)

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

  • 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);
    }
    

答案 1 :(得分:0)

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

(虽然你还没有描述&滑块是如何实际声明的 - 精灵,mc等)

使用名称属性:

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

获取幻灯片getChildByName("instanceName")(在您的第二个功能中)


或者你也可以:

  • 将幻灯片设置为类成员, 可以通过所有的功能访问 班级。
  • 添加每张幻灯片的参考 一个可用作类的数组 会员及其所有职能。

答案 2 :(得分:0)

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

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

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