我的目標是擁有低分辨率的圓圈(非常像素化)。我知道還有其他方法可以做到這一點,但我想了解cacheAsBitmap的工作原理。當我使用我繪製的非常小的精靈片,然後縮放位圖時,它看起來很棒(非常塊狀,像素化,平滑關閉)。精細。但是,當我以編程方式繪製一個非常小的圓(例如半徑爲4),然後將其緩存,然後對其進行縮放時,它會像素化,但非常圓,完整。我認爲玩家不會將它緩存爲位圖,直到它在屏幕上呈現。即使我在swf完全加載和運行之前不進行擴展,我仍然會得到完美的圓形(但像素化)的大圓圈。有沒有辦法通過編程方式緩存某些東西,然後按比例放大導入的位圖的方式?AS3 cacheAsAsyncmap混淆
我試過的代碼基本上是這樣的:
for (var i: int = 0; i < 200; i++) {
var size: Number = 8;
var item: RunnerMassObj = new RunnerMassObj();
item.graphics.lineStyle(0,0x0,0,true);
item.graphics.beginFill(0xFF8844 + i * 10);
if (i < 10) {
item.graphics.drawCircle(0, 0,size);
} else {
item.graphics.drawRect(0, 0, size, size);
}
item.graphics.endFill();
addChild(item);
item.x = Math.random() * 1000 + 50;
item.y = Math.random() * 1000;
item._bottom.y = size;
// here I cache it as a bitmap.
item.cacheAsBitmap = true;
allMassObj.push(item);
}
,然後在我的engineTick代碼,我有這樣的:和
for(var i:int = 0; i < allMassObj.length; i++)
{
// and here I scale it up, expecting the pixels to stay pixelated.
// has the circle somehow maintained its vector shape?
allMassObj[i].scaleX = 10;
allMassObj[i].scaleY = 10;
}
,而不是左邊的大像,我得到的微小的 「真實畫面」 右側像素:
任何見解都將非常感謝!
+1讓我有信心朝着這個方向前進。我認爲這只是爲了抗鋸齒。我只是最終得到它的工作,減去了一些需要的tweeks,但我得到了粗糙的像素。我會用完整的工作代碼編輯你的答案。 –
謝謝您的關注Neal。我很高興看到你找到了自己的路。上帝保佑。 – statosdotcom