В этом кратком совете вы узнаете, как измерить текущую частоту кадров вашего приложения Flash с помощью ActionScript 3, и отобразить FPS на экране.
Важность частоты кадров
Частота кадров, или число кадров в секунду (к / с), — это частота, с которой устройство формирования изображения создает уникальные последовательные изображения, называемые кадрами. Этот термин в равной степени применим к компьютерной графике, видеокамерам, пленочным камерам и системам захвата движения.
Каждый кадр является неподвижным изображением; Отображение кадров в быстрой последовательности создает иллюзию движения. Чем больше кадров в секунду (кадров в секунду), тем плавнее движение.
Измерение fps позволит вам проверить производительность вашего фильма или приложения и при необходимости выполнить оптимизацию.
Это может быть очень полезно при тестировании приложения, которое будет работать в разных средах, в интернет-браузере, на рабочем столе, на телевидении или на мобильном устройстве.
С небольшой помощью из ActionScript 3 мы вычислим частоту кадров с помощью метода getTimer () и создадим TextField для отображения результатов в режиме реального времени в рабочей области.
Шаг 1: Создайте новый файл
Откройте Flash и создайте новый файл Flash (ActionScript 3).

Шаг 2: Открыть панель действий
Нажмите Option / Alt + F9 или перейдите в Window> Actions, чтобы открыть панель действий.

Шаг 3: переменные
Мы будем использовать три переменные, как описано в комментариях:
|
1
2
3
|
var startTime:Number;
var framesNumber:Number = 0;
var fps:TextField = new TextField();
|
Шаг 4: Основная функция
Это основная функция нашего счетчика:
|
1
2
3
4
5
6
7
|
function fpsCounter():void
{
startTime = getTimer();
addChild(fps);
addEventListener(Event.ENTER_FRAME, checkFPS);
}
|
Шаг 5: Проверьте на ввод кадра
Эта функция вычисляет частоту кадров на входном фрейме:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
function checkFPS(e:Event):void
{
var currentTime:Number = (getTimer() — startTime) / 1000;
framesNumber++;
if (currentTime > 1) //If the time in seconds is greater than 1
{
fps.text = «FPS: » + (Math.floor((framesNumber/currentTime)*10.0)/10.0);
startTime = getTimer();
framesNumber = 0;
}
}
|
Шаг 6: вызов функции
Используйте эту единственную строку кода для запуска основной функции:
|
1
|
fpsCounter();
|
Шаг 7: Полный код
Полный код должен выглядеть так:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
var startTime:Number;
var framesNumber:Number = 0;
var fps:TextField = new TextField();
function fpsCounter():void
{
startTime = getTimer();
addChild(fps);
addEventListener(Event.ENTER_FRAME, checkFPS);
}
function checkFPS(e:Event):void
{
var currentTime:Number = (getTimer() — startTime) / 1000;
framesNumber++;
if (currentTime > 1)
{
fps.text = «FPS: » + (Math.floor((framesNumber/currentTime)*10.0)/10.0);
startTime = getTimer();
framesNumber = 0;
}
}
fpsCounter();
|
Шаг 8: Версия класса документа
Возможно, вы предпочитаете использовать класс документа, а не код временной шкалы? Следующий фрагмент демонстрирует, как это сделать. Прочтите этот краткий совет, если вы не уверены, как подойти к классу документа.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package
{
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.utils.getTimer;
public class FPSDemo extends MovieClip
{
public var startTime:Number;
public var framesNumber:Number = 0;
public var fps:TextField = new TextField();
public function FPSDemo()
{
fpsCounter();
}
public function fpsCounter():void
{
startTime = getTimer();
addChild(fps);
addEventListener(Event.ENTER_FRAME, checkFPS);
}
public function checkFPS(e:Event):void
{
var currentTime:Number = (getTimer() — startTime) / 1000;
framesNumber++;
if (currentTime > 1)
{
fps.text = «FPS: » + (Math.floor((framesNumber/currentTime)*10.0)/10.0);
startTime = getTimer();
framesNumber = 0;
}
}
}
}
|
Вы можете использовать этот класс для встраивания счетчика FPS в любой проект, например так:
|
1
2
|
var fpsDemo:FPSDemo = new FPSDemo();
addChild( fpsDemo );
|
Просто скопируйте все это в новый файл AS и сохраните его как «FPSDemo.as», тогда вы сможете использовать его в любое время.
Вывод
Это основной пример того, как вы можете использовать функцию счетчика частоты кадров. Попробуйте, экспериментируйте и используйте его в своих проектах.
Спасибо за прочтение!