我有以下功能:
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中将其删除?(我有几个来自幻灯片的实例,所以我必须通过它才能拥有正确的实例)。 谁可以帮助我?
答案 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
}