Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как остановить анимацию на определенном кадре? (http://www.flasher.ru/forum/showthread.php?t=125199)

droch_fhoula 18.05.2009 22:19

как остановить анимацию на определенном кадре?
 
Здравствуйте.
есть мувиклип к которому привязан класс.
и нужно сделать чтоб при нажатии кнопки играла анимация со 2ого кадра.
как прописать чтоб если анимация дошла до 40ого кадра и останавилась на нем.
когда пишу в кадре stop(); все работает.
но мне нужно знать как сделать это програмно.
вот код с которым работаю:
Код AS3:

package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
 
public class MenuForSite extends MovieClip {
 public function MenuForSite() {
  menu_btn.buttonMode = true;
  menu_btn.addEventListener(MouseEvent.CLICK, onClick);
  stop();
 
  function onClick(e:MouseEvent):void {
  if (currentFrame == 1) {
    gotoAndPlay(2);
  } else if (currentFrame == 40) {
    gotoAndPlay(41);
  }
  }
 }
}
}


Psycho Tiger 18.05.2009 22:45

addFrameScript

droch_fhoula 18.05.2009 22:49

я пробовала так
Код AS3:

addFrameScript(40,stop)

да движение останавливается но при повторном нажатии на кнопку должна проигрыватся другая анимация, но она так и остается на стоп :(

Psycho Tiger 19.05.2009 16:57

Эм... а play() использовали?))

Хотя, помню была похожая проблема. Времени детально заняться её изучением не было, в голову пришло не изящное, но тем не менее работающее решение - просто перекрыть stop другой ф-цией.
Например, после нажатия на кнопку применить
Код AS3:

addFrameScript(40,function(){});


Aerohd 19.05.2009 17:30

Зайдите сюда http://blog.greensock.com/tweenmaxas3/. Здесь есть удобный твинер.

Psycho Tiger 19.05.2009 22:33

А как это связано с вопросом?

AL.exe 20.05.2009 01:29

Код AS3:

package {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
 
    public class MenuForSite extends MovieClip
    {
        public function MenuForSite()
        {
            menu_btn.buttonMode = true;
            menu_btn.addEventListener(MouseEvent.CLICK, onClick);
            addEventListener(Event.ENTER_FRAME, stopIfNeeded);
            stop();
        }
 
        function onClick(e:MouseEvent):void
        {
            if (currentFrame == 1)
            {
                gotoAndPlay(2);
            }
        }
 
        function stopIfNeeded(e:Event):void
        {
            if (currentFrame == 40)
            {
                stop();
                removeEventListener(Event.ENTER_FRAME, stopIfNeeded);
            }
        }
    }
}


GBee 20.05.2009 08:14

больно знакомый код, эта тема уже была.

IDimitry 20.05.2009 19:02

Какой кошмар. Как-то не приходилось останавливать мувик на определенном кадре и не задумывался над реализацией. Даже не думал, что для того, чтобы остановить мувик на опреденном кадре, надо анализировать каждый кадр.
По отношению к АС2 первый реальный (в моей шкале ценностей) "провис" АС3.
Хотя для чего-то же так сделано (или точнее - не сделано).

AL.exe 21.05.2009 00:17

Это просто способ без addFrameScript, последний не рассматриваем, т.к. он не документирован.

Вообще, я не вижу в чем проблема - взяли и написали в кадре stop и все. Всякие заморочки вроде "писать только используя внешние файлы классов" - не более, чем идолопоклонничество. В мувииклипах почему бы stop() и не расставить где надо?


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

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