PDA

Просмотр полной версии : реальный fps в IDE и в браузере %)


ZGG
28.06.2010, 20:24
Здравствуйте!
Возникла проблема с проигрыванием флешки.
Ниже код, который показывает реальный fps.
package{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.utils.getTimer;
[SWF(frameRate=200)]

public class Main extends Sprite{
private var last:uint = getTimer();
private var ticks:uint = 0;
private var tf:TextField;

public function Main() {

tf = new TextField();
tf.text = "----- fps";
addChild(tf);
addEventListener(Event.ENTER_FRAME, tick);
}

public function tick(evt:Event):void {
ticks++;
var now:uint = getTimer();
var delta:uint = now - last;
if (delta >= 1000) {
//trace(ticks / delta * 1000+" ticks:"+ticks+" delta:"+delta);
var fps:Number = ticks / delta * 1000;
tf.text = fps.toFixed(1) + " fps";
ticks = 0;
last = now;
}
}
}
}


Когда тестирую ролик в Adobe Flash Professional, то получаю все 200 fps, а вот когда запускаю через автономный флеш плеер или через браузер получаю максимум 60 fps.

В чем проблема?

Заранее спасибо за ответ!

VVall
28.06.2010, 20:34
Браузеры ограничивают частоту обновления экрана до ~66 (IE) или 100 (FF и некоторые другие) кадров в секунду. От браузера также зависит точность всех таймеров, а от установленного wmode производительность. Поэтому в реальной ситуации приложение может работать существенно медленнее, чем в IDE.

ZGG
28.06.2010, 20:45
... зависит точность всех таймеров

Вот в этом и весь прикол. Мне нужно как то получить 150 - 200 fps для точности событий таймера в 10 мс. А вот при 60 fps получаются большие погрешности.
От блин! Все, мой проект накрылся. :(

VVall, спасибо большое за ответ!