![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 3
|
Ниже пример анимации. В оригинале разноцветные кружки заменены на логотипы компаний. Нужно сделать, да вот не знаю как, следующее:
1. При наведении вся анимация увеличивается, не запускаясь при этом заново. 2. При наведении она останавливается. При отведении проигрывается дальше. 3. Если при наведении идет смена логотипа - эта смена заканчивается, а уж потом останавливается. Прошу помощи! Ссылки на уроки или верные направления для поиска решения этой задачи. Заранее благодарен Спасибо. |
|
|||||
|
[+6 16.03.11]
Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
|
киньте исходник
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 3
|
вот, пожалуста
|
|
|||||
|
[+6 16.03.11]
Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
|
Короче, чета я запутался с этими кадрами.
Суть такая, рисуешь зону, при наведении на которую будет мастабироваться анимация. Называешь ее zone. В нее помещаещь мувик с анимацией. Мувик называешь logo. Подписываешь frameLabel для кадров смены логотипа. Делаешь класс документа и туда пихаешь примерно такой код: package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class DocumentClass extends Sprite { public function DocumentClass() { zone.addEventListener(MouseEvent.MOUSE_OVER, mouseOverListener); zone.logo.addEventListener(MouseEvent.MOUSE_OVER, mouseOverLogoListener); zone.logo.addEventListener(MouseEvent.MOUSE_OUT, mouseOutLogoListener); } // увеличение анимации private function mouseOverListener(event:MouseEvent):void { zone.scaleX = 1.5; zone.scaleY = 1.5; zone.addEventListener(MouseEvent.MOUSE_OUT, mouseOutListener); } // уменьшение анимации private function mouseOutListener(event:MouseEvent):void { zone.scaleX = 1; zone.scaleY = 1; } // мышь над логотипом private function mouseOverLogoListener(event:MouseEvent):void { stage.addEventListener(Event.ENTER_FRAME, enterFrameListener); } // мышь покидает логотип private function mouseOutLogoListener(event:MouseEvent):void { zone.logo.play(); stage.removeEventListener(Event.ENTER_FRAME, enterFrameListener); } // событие смены кадров, когда мышь над логотипом private function enterFrameListener(event:Event):void { trace(zone.logo.currentLabel); if (zone.logo.currentLabel == null) { zone.logo.stop(); }else { zone.logo.play(); } } } } Когда курсор наводится на logo, запускаем слушание события enter frame. Здесь в каждом кадре проверяем, есть ли надпись у кадра. Как помним, надпись писали только для кадров со сменой анимации. Т.е. если надписи нет, то можно остановить проигрывание клипа logo, если есть - играем дальше. Вот здесь какая-то ерунда происходит. Дело в том, что currentLabel также реагирует и на подписи предыдущего кадра. Отсюда и проблема с кодом. Но смысл, думаю понятен: проверять, можно ли остановить проигрывание мувиклипа или нет. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 3
|
даже не знаю как отблагодарить... надеюсь моих познаний хватит доразбираться
![]() спасибо! ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|