Форум 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)
-   -   как сделать FPS-тест? (http://www.flasher.ru/forum/showthread.php?t=115188)

Crash512 21.08.2008 18:13

как сделать FPS-тест?
 
Нужно выводить строку с текущим FPS, чтобы проверить на тормоза прилоежние в разных условиях. Как это сделать? (на AS2.0 или AS3.0)

lexa2000lexa 21.08.2008 18:37

можно заюзать вот это кусок кода
Код:

var fps:Number = 0;
var frames:Number = 0;
var time:Number = getTimer();
this.onEnterFrame = function():Void {
        frames++;
        if (frames == 10) {
                fps = frames/(getTimer() - time);
                field.text = Math.round(fps*100000)/100;
                time = getTimer();
                frames = 0;
        }
}


chingachgoog 21.08.2008 18:49

Код:

onEnterFrame=function(){
        f1=getTimer()
        trace(1000/(f2-f1))
        f2=f1
}


qazwsx 22.08.2008 08:55

И получаем отрицательное число с разбросом от -5 до -32 при выставленном фпс 32. Но это не главное главное что при фпс выставленном больше 32 мы получим тоже самое...

Код:

var fp:Number = 0;
var time:Number = 1;

function enterFrame():Void{
        fp++;
        var tTime:Number = getTimer()/1000;
       
        if(tTime>time){
                time++;
                trace(fp);
                fp = 0;
        }
}

Вот это и в прям фпс потому что отображает количество кадров в секунду. Похоже на спидометр чемто :)

etc 22.08.2008 10:44

Цитата:

Сообщение от qazwsx (Сообщение 759626)
И получаем отрицательное число с разбросом от -5 до -32 при выставленном фпс 32. Но это не главное главное что при фпс выставленном больше 32 мы получим тоже самое...

Код:

var fp:Number = 0;
var time:Number = 1;

function enterFrame():Void{
        fp++;
        var tTime:Number = getTimer()/1000;
       
        if(tTime>time){
                time++;
                trace(fp);
                fp = 0;
        }
}

Вот это и в прям фпс потому что отображает количество кадров в секунду. Похоже на спидометр чемто :)

Мне вот интересно, с какой целью вы getTimer() делите на 1000 каждый кадр?

qazwsx 22.08.2008 11:35

Обрати внимание что time в секундах конечно можно было написать time = 1000 и time+=1000 и не делить

etc 22.08.2008 13:00

Код:

onEnterFrame = function() {
        t = getTimer();
        trace(1000/(t - ot));
        ot = t;
}


chingachgoog 22.08.2008 13:38

Цитата:

Сообщение от qazwsx (Сообщение 759626)
И получаем отрицательное число с разбросом от -5 до -32 при выставленном фпс 32.

Если раздражает черточка впереди числа, то сделайте, как __etc - поменяйте в моем коде (f2-f1) на (f1-f2) :)

Цитата:

Сообщение от qazwsx (Сообщение 759626)
Но это не главное главное что при фпс выставленном больше 32 мы получим тоже самое...

А что вы ожидали? Что при выставленном fps в 1000 кадров в секунду в реальности эта тысяча и будет? :) Угадайте, что хотел своим постом спросить Crash512?

qazwsx 22.08.2008 14:30

А что по вашему фпс бывает только от 1 до 32? Или параметр framesRate сделан просто так и не на что не влияет? Не говоря уже о том что это вобщемто не реальное количество кадров в секунду.

etc 22.08.2008 14:36

Цитата:

Сообщение от qazwsx (Сообщение 759682)
А что по вашему фпс бывает только от 1 до 32? Или параметр framesRate сделан просто так и не на что не влияет? Не говоря уже о том что это вобщемто не реальное количество кадров в секунду.

Да, указанное значение в проекте ± столько же (да-да, даже в большую сторону может быть, особенно это хорошо заметно на сокетных соединениях при приеме данных), совершенно верно. В зависимости от нагрузки. Это реальное значение fps, а не выставленное в свойствах флешки.


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

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