我不知道多少,這會加快速度,但在組合使用鎖()和unlock()與copyPixels()而不是setPixel()應該會更快。
首先創建一個1x2 BitmapData實例,您可以將其用作緩衝區。最左邊的像素位於0x0,最右邊的位置位於0x0000FF00。這樣你可以簡單地從緩衝區複製適當的像素。
這種方式,您也刪除設置顏色變8次,每次調用它駐留在該函數的開銷。
這裏是什麼,我的意思是一個總體思路,不要忘記填寫相應的對於alpha值,如果你打算複製以及
// Instantiate these once only(!)
// Preferably in the constructor or an init functin
var buffer:BitmapData = new BitmapData(2,1);
var rect:Rectangle = new Rectangle(0,0,1,1);
var p:Point = new Point();
而這裏的代碼
lock();
for(var a:uint = 0; a < 8; a++)
{
// Select what color to copy, i.e. it's position in the buffer
rect.x = (vram&1) ? 1 : 0;
p.x = k; p.y = j;
copyPixels(buffer, rect, p);
k++;
vram = vram >> 1;
}
unlock();
循環之前,您應該鎖定的位圖數據後解鎖。 – Florent
你是完全正確的! –