![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
Есть собранный интерфейс игры во Flash. Много кнопок(будущих, то есть просто png картинки), все стоит на своих местах.
Мне же необходимо применить к каждой из всех кнопок пару различный эффектов (tween scaleX + scaleY + ColorTransform + добавить небольшой клип (щелчка) в месте нажатия и это все для разный состояний кнопки) Я бы сделал каждую кнопку во Flash но, кнопок слишком много, слишком долго и муторно выйдет + все уже стоит на своих местах (вручную потом ставить координаты это не вариант) Как это сделать программно (по умному )?Вот парочка идей пришедших мне в голову: 1) Это создать класс например MyCustomButton, в нем создать слушатели для состояний и применять все манипуляции к this. Далее когда оборачиваем изображение в клип, в поле "Главный класс" вместо "flash.display.MovieClip" указать наш com.name.MyCustomButton. Вот и вся работа, изменил один класс для всех кнопок, прописал базовый класс клипу и все работает. Но у меня почему то (черт знает почему), именно при таком раскладе tween не воспринимает функцию onComplete. Например: В функции меняются свойства клипа, и есть trace(). Трейс работает а свойства остаются такими же (короче ничего не происходит, прям чертовщина какая то). Не знаю на сколько такой вариант был бы правильным для кастомизации кнопок. 2) Сделать класс с статистическими функциями, и инициализировать каждую нужную кнопку с клипа интерфейса, а потом уничтожать слушатели, тоже для каждого клипа отдельно. InitClipListeners(gui.shop); InitClipListeners(gui.achives); InitClipListeners(gui.photo); и т.д. 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); } Последний раз редактировалось zCHESNOKz; 28.10.2015 в 22:28. |
![]() |
Часовой пояс GMT +4, время: 10:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|