elvensou1
30.03.2011, 12:46
Ниже пример анимации. В оригинале разноцветные кружки заменены на логотипы компаний. Нужно сделать, да вот не знаю как, следующее:
1. При наведении вся анимация увеличивается, не запускаясь при этом заново.
2. При наведении она останавливается. При отведении проигрывается дальше.
3. Если при наведении идет смена логотипа - эта смена заканчивается, а уж потом останавливается.
Прошу помощи! Ссылки на уроки или верные направления для поиска решения этой задачи.
Заранее благодарен:) Спасибо.
Короче, чета я запутался с этими кадрами.
Суть такая, рисуешь зону, при наведении на которую будет мастабироваться анимация. Называешь ее 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();
}
}
}
}
Смысл такой: zone ждет, когда над ней появляется мышь, тогда масштабируется анимация. Мышь покидает zone - масштаб возвращается обратно.
Когда курсор наводится на logo, запускаем слушание события enter frame. Здесь в каждом кадре проверяем, есть ли надпись у кадра. Как помним, надпись писали только для кадров со сменой анимации. Т.е. если надписи нет, то можно остановить проигрывание клипа logo, если есть - играем дальше.
Вот здесь какая-то ерунда происходит.
Дело в том, что currentLabel также реагирует и на подписи предыдущего кадра. Отсюда и проблема с кодом.
Но смысл, думаю понятен: проверять, можно ли остановить проигрывание мувиклипа или нет.
elvensou1
30.03.2011, 18:25
даже не знаю как отблагодарить... надеюсь моих познаний хватит доразбираться:)
спасибо!:cool:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.