国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > Flash > 正文

ActionScript3.0中建立幀頻計數器的方法

2020-07-17 13:15:22
字體:
來源:轉載
供稿:網友

幀頻的重要性
每一幀上都是一幅靜止的圖片,快速連續的幀會產生動畫,每秒的幀數越多,展現的動畫也就越流暢。

測幀頻能讓我們檢測動畫的進程,如果需要的話還可以優化動畫。

當在不同的運行環境中測試動畫時這個是非常有用的,例如瀏覽器中,電腦中,電視或手機中。

我們可以通過使用getTime()方法測幀頻,并即時的在舞臺中創建文本域來輸出結果。

——————————————————————————–

第一步:創建新文檔
打開Flash并創建一個新Flash文檔(ActionScript 3).

——————————————————————————–

第二步:打開動作畫板

執行窗口>動作打開動作面板。

——————————————————————————–

第三步:變量

我們將使用三個變量,如下所示:

var startTime:Number; //用來計算相對時間
var framesNumber:Number = 0; //當前幀頻數
var fps:TextField = new TextField(); //展示實際幀頻的文本域

——————————————————————————–

第四步:主函數
這是計數器的主函數:

function fpsCounter():void
{
startTime = getTimer(); //當動畫開始時以毫秒為單位獲取時間
addChild(fps); // 向舞臺添加文本域

addEventListener(Event.ENTER_FRAME, checkFPS); //添加逐幀監聽器并執行checkFPS函數
}

——————————————————————————–

第五步:檢查幀頻

這個函數將計算頻幀:

function checkFPS(e:Event):void
{
var currentTime:Number = (getTimer() – startTime) / 1000; //當函數執行的時候以秒為單位獲取時間

framesNumber++; //計數器加1

if (currentTime > 1) //判斷當前時間是否比1大
{
fps.text = “FPS: ” + (Math.floor((framesNumber/currentTime)*10.0)/10.0); //計算頻幀并在文本域展示
startTime = getTimer(); //重設開始的時間
framesNumber = 0; //重設幀數
}
}

——————————————————————————–

第六步:調用函數
用下面的一行代碼啟動主函數:

fpsCounter();

——————————————————————————–

第七步:全部的代碼:

全部的代碼是下面這樣的:

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();

——————————————————————————–

第八步:文檔類版

可能比起時間軸代碼你更習慣用文檔類。下面的部分說明了如何使用。

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;
}
}
}
}

你應用這個類在任意一個項目中嵌入一個這樣的頻幀計數器:

var fpsDemo:FPSDemo = new FPSDemo();
addChild( fpsDemo );

只要將它復制到一個新AS文件中并保存為“FPSDemo.as”就行了。

結論
這是一個使用幀頻計數器函數的基本的例子。試試并將它用到你的項目中。

謝謝閱讀。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 公主岭市| 河曲县| 铁岭县| 临清市| 金昌市| 临沭县| 永济市| 铜梁县| 湖州市| 开阳县| 乌鲁木齐县| 长泰县| 南和县| 安达市| 河北省| 麻栗坡县| 花莲县| 冷水江市| 新安县| 扎兰屯市| 南涧| 洛隆县| 化隆| 武乡县| 思茅市| 扶余县| 桑植县| 中宁县| 清徐县| 三都| 通化市| 东阳市| 申扎县| 克什克腾旗| 和政县| 合水县| 虞城县| 台北市| 大新县| 渭南市| 潮州市|