Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с setTimeout (http://www.flasher.ru/forum/showthread.php?t=129334)

Actual 30.08.2009 11:33

Проблема с setTimeout
 
помогите, пожалуйста разобраться.

Есть 2 мувика web1 { длина 145 кадров, 25fps, т.е 5,8с } и web2 {167 кадров, 25fps, т.е 6,6с }
Кидаю их на другой мувик и пишу код:
Код AS1/AS2:

web1.play();
web2.stop();
setTimeout(wait2, 5800);
function wait1() {
        web1.play();
        web2.stop();
        setTimeout(wait2, 5800);
}
function wait2() {
        web2.play();
        web1.stop();
        setTimeout(wait1, 6600);
}

по идеи они должны поочерёдно до конца проигрываться, но в реале они проигрываются совсем не до конца. (Если это важно: скорость для главного мувмка 25fps)

Zik. 30.08.2009 15:22

а не проще заюзать
Код AS1/AS2:

_currentframe

?

aksios 30.08.2009 16:24

Дело в том, что время тайм лайна не является точным, оно вообще не связано с программным таймером.
Соответственно, в Вашем коде будет накапливаться погрешность - анимация не будет доходить до конца при завершении вызываемой функции.
Ваще эта функция из АС3, не понимаю, что она тут делает.

etc 30.08.2009 18:51

setTimeout есть в AS1/AS2.

Actual 30.08.2009 19:31

ZIK68, а можно поподробнее?

Zik. 30.08.2009 20:16

Код AS1/AS2:

web1.play();
web2.stop();
this.onEnterFrame = function():Void {
        if (web1._currentframe > 144) {
                web1.stop();
                web2.play();
        }
        if (web2._currentframe > 166) {
                web2.stop();
                web1.play();
        }
}


Mnilionic 30.08.2009 20:28

Код AS1/AS2:

if (web1._currentframe == web1._totalframes)


Actual 30.08.2009 20:41

ZIK68, Mnilionic, огромное спасибо - всё работает как надо!!!

Actual 06.09.2009 17:00

Только сейчас заметила, что после второй итерации проигрывается только web1 всё время. Не могу понять почему. =(

udaaff 06.09.2009 17:55

Выкладывайте исходник с примером.

Actual 06.09.2009 18:23

Код AS1/AS2:

web1.play();
web2.stop();
this.onEnterFrame = function():Void {
        if (web1._currentframe == web1._totalframes) {
                //web1._currentframe=0;
                web1.stop();               
                web2.play();
        }
        if (web2._currentframe == web2._totalframes) {
                //web2._currentframe =0;
                web2.stop();               
                web1.play();
        }
}


iNils 06.09.2009 18:28

А убивать onEnterFrame после проигрывания обоих анимаций кто будет?

Actual 06.09.2009 18:39

Зачем? мне нужно, чтобы они бесконечно проигрывались по очереди. Или я неправильно вас поняла?

Wolsh 06.09.2009 20:49

Замени play() на gotoAndPlay(1)

Actual 06.09.2009 21:05

Заменила. Теперь web1 проигрывается 1 раз и все. они оба останавливаются. Потом заменила stop() на gotoAndStop(1). Теперь всё работает отлично. Всем большое спасибо!


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

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