我已經填充了位圖資源的位圖數據的圓形狀。ActionScript - getPixel()使用變換矩陣在BitmapData上創建座標?
我需要從中心旋轉圓,所以我將位圖添加到圓的中心,並使用矩陣變換將位圖數據向上和向左移動,使其看起來居中。
現在我試圖讀getPixel()
的位圖數據,但返回值是關閉的,因爲它返回位圖數據的未轉換位置而不是可見的轉換位圖數據。
Bitmap(Sprite(evt.currentTarget).getChildAt(0)).bitmapData.getPixel(evt.localX, evt.localY)
我怎樣才能得到一個準確的讀取像素數據從位圖矩陣轉換?
更新了代碼。假設我的例子中的redCircleData更豐富多彩,值得檢索像素數據。
var redCircleData:Sprite = new Sprite();
redCircleData.graphics.beginFill(0xFF0000, 1.0);
redCircleData.graphics.drawCircle(0, 0, 100);
redCircleData.graphics.endFill();
var matrix:Matrix = new Matrix();
matrix.tx = redCircleData.width/2;
matrix.ty = redCircleData.height/2;
var myBitmapData:BitmapData = new BitmapData(redCircleData.width, redCircleData.height, true, 0x00FFFFFF);
myBitmapData.draw(redCircleData, matrix);
var theBitmap:Bitmap = new Bitmap(myBitmapData, PixelSnapping.AUTO, true);
theBitmap.x -= matrix.tx;
theBitmap.y -= matrix.ty;
addChild(theBitmap);
我需要將我的大腦圍繞Matrix矩陣更好一些 - 幾個月前我不得不做很類似的事情,而當矩陣轉換工作時,我不知道如何以有意義的方式找到(0,0)。我最終做的是創建一個包裝器,將轉換後的圖像添加到包裝器中,然後繪製包裝器 - 這顯然會比較慢。 – Myk 2011-03-25 00:08:12
重要的是要記住(對於我來說),矩陣乘法是不可交換的(AB不同於BA),所以當你有多個變換矩陣順序地應用到某個東西時,必須撤消逆向順序,您可以將它們應用到您開始的位置,或者(等同地)按順序將它們按順序相乘,然後再進行反轉。 – 2011-03-25 00:13:53
閱讀文檔後,我不確定這是否適用於我的情況。 incase我不太關注你,一些示例代碼將不勝感激。 – TheDarkIn1978 2011-03-25 10:42:21