我正在製作基於Flash AS3的遊戲,並且正在構建自定義字體系統。它的工作原理如下:BitmapData類從庫(FontSource)中獲取PNG文件,在給定字符串中的每個字符之間循環,然後從函數(getOffset)中獲取圖像中的x,y,寬度和高度,然後它使用copyPixels繪製自定義字體文本。Flash AS3:使用copyPixels的打字機效果
下面的代碼:
public function draw(str) {
var png = new FontSource(480, 32);
var offsets;
var char;
var rect;
var x;
var y;
this.lock();
for (var i = 0; i < str.length; i++) {
char = str.substr(i, 1);
offsets = getOffsets(char);
rect = new Rectangle(offsets[0], offsets[1], offsets[2], offsets[3]);
this.copyPixels(png, rect, new Point(x, y));
x += offsets[2];
}
this.unlock();
}
現在,這裏的問題是:我基礎上,ENTER_FRAME事件建立一個打字機效果一流;每個新的框架,一個新的字符被添加到一個字符串。所以,我想問一下這些方法中哪一個在性能方面會做得更好:
1)調用draw()來重繪整個BitmapData的每一幀。
2)製作一個alpha蒙板,並在每一幀中擴大其寬度。
3)製作單獨的對象並將它們添加到舞臺的每一幀。
謝謝你的時間。
1)更新現有的** BitmapData **很好。每次你都不要創建一個** FontSource **的新實例。 – Organis
謝謝你的回覆。 – Ali