Показать сообщение отдельно
Старый 30.03.2011, 18:18
dedsky вне форума Посмотреть профиль Отправить личное сообщение для dedsky Найти все сообщения от dedsky
  № 4  
Ответить с цитированием
dedsky
 
Аватар для dedsky

Регистрация: Jul 2004
Адрес: от Москвы до самых до окраин
Сообщений: 172
Короче, чета я запутался с этими кадрами.
Суть такая, рисуешь зону, при наведении на которую будет мастабироваться анимация. Называешь ее 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 также реагирует и на подписи предыдущего кадра. Отсюда и проблема с кодом.
Но смысл, думаю понятен: проверять, можно ли остановить проигрывание мувиклипа или нет.