Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Увеличить и застопить анимацию. Как? (http://www.flasher.ru/forum/showthread.php?t=153211)

elvensou1 30.03.2011 12:46

Увеличить и застопить анимацию. Как?
 
Вложений: 1
Ниже пример анимации. В оригинале разноцветные кружки заменены на логотипы компаний. Нужно сделать, да вот не знаю как, следующее:

1. При наведении вся анимация увеличивается, не запускаясь при этом заново.
2. При наведении она останавливается. При отведении проигрывается дальше.
3. Если при наведении идет смена логотипа - эта смена заканчивается, а уж потом останавливается.

Прошу помощи! Ссылки на уроки или верные направления для поиска решения этой задачи.
Заранее благодарен:) Спасибо.

dedsky 30.03.2011 15:16

киньте исходник

elvensou1 30.03.2011 15:50

Вложений: 1
вот, пожалуста

dedsky 30.03.2011 18:18

Короче, чета я запутался с этими кадрами.
Суть такая, рисуешь зону, при наведении на которую будет мастабироваться анимация. Называешь ее zone. В нее помещаещь мувик с анимацией. Мувик называешь logo. Подписываешь frameLabel для кадров смены логотипа.
Делаешь класс документа и туда пихаешь примерно такой код:
Код AS3:

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();
                        }
                }
        }
}

Смысл такой: zone ждет, когда над ней появляется мышь, тогда масштабируется анимация. Мышь покидает zone - масштаб возвращается обратно.
Когда курсор наводится на logo, запускаем слушание события enter frame. Здесь в каждом кадре проверяем, есть ли надпись у кадра. Как помним, надпись писали только для кадров со сменой анимации. Т.е. если надписи нет, то можно остановить проигрывание клипа logo, если есть - играем дальше.
Вот здесь какая-то ерунда происходит.
Дело в том, что currentLabel также реагирует и на подписи предыдущего кадра. Отсюда и проблема с кодом.
Но смысл, думаю понятен: проверять, можно ли остановить проигрывание мувиклипа или нет.

elvensou1 30.03.2011 18:25

даже не знаю как отблагодарить... надеюсь моих познаний хватит доразбираться:)
спасибо!:cool:


Часовой пояс GMT +4, время: 15:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.