我正在構建一個spritesheet類。希望這對某個人來說可能是低掛的,但我很難過。如何更改AS3中的位圖數據
我有一個spritesheet(png格式),我已經在運行時加載和使用從Spritesheet類。作爲內這個代碼文件ouside構造方法的置於它的一個部分上的階段:
private function onLoad(e:Event):void
{
var loaderBmp:Bitmap = Bitmap(_loader.content);
_bmpData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,0,80,80),new Point(0,0));
}
工作正常。我得到了很好地顯示.png文件的片段。在我的情況下,spritesheet是爲了動畫角色,所以我需要更新BitmapData
,我沒有任何運氣。以下是我在一個函數嘗試這種我Main
類中我使用取決於角色的狀態改變的動畫幀:
c._thisSpriteSheet._loader.content.bitmapData.copyPixels(loaderBmp.bitmapData, new Rectangle(0,20,50,30),new Point(0,0));
loaderBmp
是一個變量誰的值var loaderBmp: Bitmap = Bitmap(_spriteSheet._loader.content);
c
是對字符Runner
對象的引用。
_spriteSheet
是類型Spritesheet
的Runner
類別的財產。
_loader
是c._spriteSheet
的屬性,並且是spritesheet實例化時使用的Loader
對象。
它不會拋出錯誤,但它也不會替換原來的bitmapData對象。我想這也許意味着我需要創建一個新的BitmapData對象,並在copyPixels
方法中使用該對象,但返回相同的結果(無)。當我在調試模式下遍歷代碼時,一切看起來像是在工作,但我的顯示對象不會使用新的bitmapData進行更新。我絆倒了什麼?
感謝您的期待!
是的,如果要經常引用某些內容,請使用屬性並填充數據。但是請注意,當你有很多類似的對象具有相同的精靈表時,你會用'copyPixels()'來判斷性能問題,你必須首先切分你的'loaderBmp.bitmapData',存儲集'BitmapData'對象,然後改變你的'c._thisSpriteSheet._bmpDSheet'指向那個集合的另一個成員,而不是運行'copyPixels()'。 – Vesper