Наконец, я использую этот подход:
- Я использую пользовательское событие, например:
package com.oldes {
import flash.events.Event;
public class GameEvent extends Event {
public var data:Object;
public static var ANIMATION_END = "onAnimationEnd";
public function GameEvent(
type:String,
data: Object,
bubbles:Boolean=true,
cancelable:Boolean=false
){
super(type, bubbles, cancelable);
this.data = data;
}
override public function clone():Event {
return new GameEvent (type, data, bubbles, cancelable);
}
}
}
- В своих вложенных анимациях я заменил:
onAnimationEnd(this);
с:
import com.oldes.GameEvent;
dispatchEvent(new GameEvent(GameEvent.ANIMATION_END,{anim: this}));
- Использование классических слушателей для обработки кэшированного события.
EDIT: внешнийфайл с анимацией должен быть правильно загружен в правильный контекст, но это уже другая история AS3.