Другие решения, как правило, являются лучшими вариантами. Если вы не можете динамически добавлять свойства, вы все равно можете сопоставить объекты с именами, используя Dictionary .
private var animationNames:Dictionary = new Dictionary();
public function add(mc_name)
{
// store animation object and the name
animationNames[this.animations[mc_name]] = mc_name;
addChild(this.animations[mc_name]);
this.animations[mc_name].addEventListener(Event.ENTER_FRAME, enter_frame_handler);
}
// --------------------------------------------------------------------
public function enter_frame_handler(e:Event)
{
var name:String = animationNames[e.currentTarget];
// ...
}
В любом случае, имейте в виду, что this.animations[mc_name]
на самом деле не использует имя мувиклипа и что таким образом невозможно получить имя переменной. Если вы сделаете this.animations[some_other_name] = this.animations[mc_name];
, у вас будет две переменные, ссылающиеся на один и тот же объект. Не было бы никакого способа сказать, к какой переменной привыкли присоединять слушателя. Поэтому убедитесь, что вы понимаете разницу между именем мувиклипа и именем его переменной.