Форум 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)
-   -   организация задержки перед переходом на следующий кадр (http://www.flasher.ru/forum/showthread.php?t=104680)

Zhihar 29.11.2007 21:43

организация задержки перед переходом на следующий кадр
 
Приветствую
Я использую такой код:

Код:

stop();

var nDeltaTimer:Number = 1000;
var nStartTimer:Number = getTimer()

this.onEnterFrame = function()
{
        if (getTimer() - nStartTimer > nDeltaTimer)
        {
                play();
        }
}

есть ли что-нибудь более короткое, правильное и менее корявое?

olexandr 29.11.2007 21:58

да, конечно
setInterval
в хелпе прекраснейший пример по этой команде

Molecula 29.11.2007 22:24

Я бы посоветовал - setTimeout() - там заморачиваться с очиской не надо.

Zhihar 29.11.2007 22:29

ок, спасибки
а у него есть какие-нить ограничения?

под чисткой я так понимаю понимается удаление или использование нулевого onEnterFrame?

Molecula 29.11.2007 22:35

Есть, 8-й версия плеера.
Чистка в смысле, что при запуске setInterval(), для его удаления нужно было юзать clearInterval(), а для setTimeout() такого не надо делать, и работает, вроде лучше.

Я исправил в предыдущем посте функцию.

Zhihar 29.11.2007 22:58

setTimeout тоже использует clearTimeout

на счет setInterval код должен быть примерно таким:

Код:

stop();

var g_nIntervalID:Number;

function PlayFunc()
{
        clearInterval(intervalId);
        play();

}

g_nIntervalID = setInterval(this, "PlayFunc", 1000);

не скажу что он стал меньше :-) хотя все же понятнее и наверное правильнее

Molecula 30.11.2007 00:05

Да, но что короче?
Код:

var _mt:Number = setTimeout(delayFunc, 2000);
function delayFunc()
 {
play();
}


Landysh 30.11.2007 01:05

Виснет :(

Код:

        if (this._currentframe > 5)
                        {
                                          while(this._currentframe > 5)
                                                                {                                                       
                                                                                                               
                                                var _mt:Number = setTimeout(delayFunc, 2000);
                                                function delayFunc()
                                                                                {
                                                                                        play();
                                                                                        this.prevFrame();
                                                                                }                                                                                                               
                                                       
                                               
                                                                  }     
                       
                        }

                       
                            if (this._currentframe < 5)
                        {
                                         
                                                while(this._currentframe < 5)
                                                {
                                                                               
                                                        var _mt:Number = setTimeout(delayFunc, 2000);
                                                function delayFunc()
                                                                                {
                                                                                        play();
                                                                                        this.nextFrame();
                                                                                }                       
                                                                               
                                                }
                       
                        }
                       
                        if (this._currentframe == 5) {gotoAndPlay("start")}


B0Bka 30.11.2007 01:18

Landysh на клавиатуре заснул? (почему столько пробелов в коде)
и какой смысл использовать _currentframe? разве нельзя обойтись одними gotoAndStop(n) / gotoAndPlay(n) ?

Landysh 30.11.2007 01:47

ВОВка, смысл такой: если мы остановились на фрейме больше или меньше 5, то полюбому должны туда вернуться(на 5ый фрейм). До вставления туда паузы у меня все работало, но слишком быстро(например перескакивал с 2 фрейма на 5 сразу).

Я только начинаю осваивать AS, поэтому во многом могу ошибаться.

P/S/ - я не засыпала на клаве :)


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

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