![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
О, премного благодарен! )
|
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
так а как ее писать? ) создавать свой мувиклип с четырьмя кадрами, цеплять к нему класс-наследник от мувиклипа и т.п.?
|
|
|||||
|
Регистрация: May 2011
Адрес: 0,0,0 относительно меня
Сообщений: 123
|
В общем я попробовал создать свою кнопку. Тут по ходу пьесы еще выяснилось, што необходимо наличие затяжного нажатия, так сказать, что в основном меня и спровоцировало перейти к мувиклипу. Вот мои попытки:
создал MovieClip с тремя ключевыми кадрами (так сказать upState, начало downState и окончание downState), причем кадры пустые. создал класс MyButton: package { import flash.display.MovieClip; import flash.display.Loader; import flash.display.Bitmap; import flash.net.URLRequest; import flash.display.LoaderInfo; public class MyButton extends MovieClip { public var upState:Bitmap; public var downState:Bitmap; public var currState:Bitmap; public function MyButton(_upState:Bitmap, _downState:Bitmap) { upState = _upState; downState = _downState; currState = upState; gotoAndStop(1); addChild(currState); } public function pressed() { gotoAndStop(2); removeChild(currState); currState = downState; addChild(currState); play(); } public function unpressed() { gotoAndStop(1); removeChild(currState); currState = upState; addChild(currState); } } } в основном классе пишу: package my { //всякие импорты public class Main extends MovieClip { //всякие переменные ) var button_up:Loader = new Loader(); var button_down:Loader = new Loader(); var up : Boolean = false; var down : Boolean = false; var btn : MyButton; public function Main() { button_up.contentLoaderInfo.addEventListener(Event.COMPLETE, compUp); button_up.load(new URLRequest("C:\\images\\back_up.png")); button_down.contentLoaderInfo.addEventListener(Event.COMPLETE, compDown); button_down.load(new URLRequest("C:\\images\\back_down.png")); } function compUp(event:Event) { trace("!!"); up = true; if (up && down) { btn = new MyButton(Bitmap(button_up.content), Bitmap(button_down.content)); addChild(btn); btn.addEventListener(MouseEvent.CLICK, my); } } function compDown(event:Event) { trace("@@"); down = true; if (up && down) { btn = new MyButton(Bitmap(button_up.content), Bitmap(button_down.content)); addChild(btn); btn.addEventListener(MouseEvent.CLICK, my); } } function my(event:MouseEvent) { btn.pressed(); //всякий код ) } } } В принципе, все вроде работает как надо, но понимаю, што сделано через *опу ) так вот, может кто-нибудь што-нибудь присоветовать ценного? ) в частности, как в моем случае избавиться от кода в кадре? ) Последний раз редактировалось zxcv; 20.06.2011 в 12:36. |
|
|||||
|
Нет, у вас сам подход неверный (хотя его можно допилить, но лучше сделать сразу, как надо). Смысл такой: мы передаем в конструктор кнопки хэш/по отдельности каждый стейт/словарь, все, что надо, словом. Стейт с нажатием у вас будет либо отдельным спрайтом со своими контроллером анимации, либо отдельным мувиклипом со stop() в конце - я бы выбрал первый вариант, ибо давно уже к FlashIDE не прикасаюсь вообще, предпочитая писать на чистом as3.
Теперь сама кнопка. Сначала мы создаем upState, по наведению мы удаляем вообще upState, на его место приходит overState. Он создается с нуля, так же, как и downState. Удяляются стейты тоже с концами, то есть со всеми отписками, занулениями. Вот так, все просто.
__________________
тут я |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|