Сегодня я расскажу, как сделать простенький класс для измерения FPS. Там все просто, как 1+1, пишу просто от нечего делать.
Итак, Как он работает? Все очень просто. Каждый фрейм к переменной прибавляется 1. Каждую секунду по таймеру эта переменная приравнивается к нулю и ее значение выводится на экран.
Впере-е-ед!
Шаг 1. Создаем класс FPSInspector. У меня он называется SBFPSInspector, но это не суть важно. Шаг 2. Создаем переменные
Code
private var fps:int; //Собственно, FPS private var fpsMeterTF:TextField = new TextField(); //TextField, чтобы выводить FPS на экран. private var timer:Timer = new Timer(1000, 0);
//Тот-самый-таймер. Шаг 3. Создаем функции onTimerTick и onEnterFrame. Так, как они должны быть повешены на событие, оба должны иметь один аргумент типа Event.
onTimerTick:
Code
private function onTimerTick(e:Event):void { fpsMeterTF.text = "FPS: " + String(fps);//Выводит FPS на экран fpsMeterTF.textColor = 0xFF0000;//Меняет цвет на красный, если FPS меньше 10. if(fps>10) { fpsMeterTF.textColor = 0xFFFF00; //Меняет цвет на желтый, если FPS больше 10, но меньше 25 } if(fps>25) { fpsMeterTF.textColor = 0x33FF00; //Меняет цвет на зеленый, если FPS больше 25. } fps = 0; }
onEnterFrame:
Code
private function onEnterFrame(e:Event):void { fps++; //+1 к FPS. }
Как видите, все очень просто. Шаг 4. Функция инициализации
Code
this.addChild(fpsMeterTF); //Добавляет TextField fpsMeterTF.textColor = 0xFFFFFF; //Устанавливает изначальный цвет на белый fpsMeterTF.antiAliasType = "Use device fonts"; //Устанавливает Anti-Alias fd psMeterTF.width = 96; //Ширина timer.addEventListener(TimerEvent.TIMER, onTimerTick); //Листенер для таймера timer.start(); //Старт таймера stage.addEventListener(Event .ENTER_FRAME, onEnterFrame); //Листенер для смены кадра
Шаг 5. Привязываем к муви-клипу и пихаем на сцену/добавляем сами кодом.
public class SBFPSInspector extends MovieClip { private var fps:int; private var fpsMeterTF:TextField = new TextField(); private var timer:Timer = new Timer(1000, 0);