Есть собранный интерфейс игры во Flash. Много кнопок(будущих, то есть просто png картинки), все стоит на своих местах.
Мне же необходимо применить к каждой из всех кнопок пару различный эффектов (tween scaleX + scaleY + ColorTransform + добавить небольшой клип (щелчка) в месте нажатия и это все для разный состояний кнопки)
Я бы сделал каждую кнопку во Flash но, кнопок слишком много, слишком долго и муторно выйдет + все уже стоит на своих местах (вручную потом ставить координаты это не вариант)
Как это сделать программно (по умному

)?
Вот парочка идей пришедших мне в голову:
1) Это создать класс например
MyCustomButton, в нем создать слушатели для состояний и применять все
манипуляции к
this. Далее когда оборачиваем изображение в клип, в поле "Главный класс" вместо
"flash.display.MovieClip" указать наш
com.name.MyCustomButton. Вот и вся работа, изменил один класс для всех
кнопок, прописал базовый класс клипу и все работает.
Но у меня почему то (черт знает почему), именно при таком раскладе tween не воспринимает функцию
onComplete.
Например: В функции меняются свойства клипа, и есть trace(). Трейс работает а свойства остаются такими же (короче
ничего не происходит, прям чертовщина какая то).
Не знаю на сколько такой вариант был бы правильным для кастомизации кнопок.
2) Сделать класс с статистическими функциями, и инициализировать каждую нужную кнопку с клипа интерфейса, а потом уничтожать слушатели, тоже для каждого клипа отдельно.

Код AS3:
InitClipListeners(gui.shop);
InitClipListeners(gui.achives);
InitClipListeners(gui.photo);
и т.д.
например:

Код AS3:
InitClipListeners(clip:MovieClip):void
{
clip.addEventListener(MouseEvent.ROLL_OVER, onRollOver);
clip.addEventListener(MouseEvent.ROLL_OUT, onRollOut);
clip.addEventListener(MouseEvent.CLICK, clickHandler);
}
DestroyClipListeners(clip:MovieClip):void
{
clip.removeEventListener(MouseEvent.ROLL_OVER, onRollOver);
clip.removeEventListener(MouseEvent.ROLL_OUT, onRollOut);
clip.removeEventListener(MouseEvent.CLICK, clickHandler);
}
Но как такой вариант, правильный или нет я не знаю. (Была проблема с Stage.mouseX в статической функции, и решил узнать у более опытных ребят) Помогите пожалуйста)