Форум 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=118199)

Noro 17.11.2008 19:17

Скорость воспроизведения
 
Как изменить скорость воспроизведения заданного MovieClip-а .

iNils 17.11.2008 19:21

Код AS3:

stage.frameRate = фпс

Но действует глобально на весь ролик.

Noro 17.11.2008 19:23

мне нужно применительно одному MovieClip-у.

iNils 17.11.2008 19:29

Тогда запускаете таймер и вручную меняете кадры.

Noro 17.11.2008 19:32

А по другому никак?

musat 17.11.2008 21:30

Первое, что пришло в голову:
Код AS3:

package {
    import flash.display.MovieClip;
    import flash.utils.setInterval;
    import flash.utils.clearInterval;
 
    public class MyMovieClip extends MovieClip {
        private var interval_id:uint;
        private var speed:Number;
 
        public function MyMovieClip() {
            stop();
            speed = 10;    // скорость воспроизведения в миллисекундах
            interval_id = setInterval(changeFrame,speed);
        }
 
        private function changeFrame():void {
            nextFrame();
            if (currentFrame == totalFrames) {
                clearInterval(interval_id);
            }
        }
    }
}


faust.d503 17.11.2008 23:06

musat
Это верно только если отрисовывать все кадры MyMovieClip необязательно, сцена будет перерисовываться по глобальному значению frameRate, а не каждые 10 миллисекунд.

musat 18.11.2008 00:44

Вложений: 1
faust.d503
Только что попробовал на практике, все вроде прекрасно работает. Исходник приложил.
Чтобы увидеть результат, в классе MyMovieClip.as закомментируйте
Код AS3:

speed = stage.frameRate;

и раскомментируйте следующую строчку.

faust.d503 18.11.2008 01:23

Вложений: 1
В конкретно вашем случае ошибку, о которой я говорю не видно.
Вот тоже самое с другими значениями.

Как видим вместо того, чтобы быстро писать 1, 2, 3 и т.д. он пишет 2, 9, 16.

Как я и говорил перерисовка сцены происходит по значению frameRate.
Так что надо принудительно еще и сцену перерисовывать по интервалу.

Скорость кстати тоже будет чуть помедленнее, чем указана в параметре speed, ибо это время между окончанием выполнения в функции в прошлый раз и началом в следующий. А функция тоже какое-то время(хотя чаще всего и очень маленькое) выполняется. Проверить можно поставив в любой интервал getTimer();

Noro 18.11.2008 15:27

а нет метода тобы все фреймы прокручивались?


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

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