0

プログラムでベクターグラフィック(rect)を作成し、グラフィックを再配置し、getPixel()を使用してグラフィックの色情報をトレースするようにMOUSE_MOVEeventListenerを設定しました。ただし、bitmapDataはステージの0,0に配置されており、グラフィックの位置と一致するように移動する方法がわかりません。

var coloredSquare:Sprite = new GradientRect(200, 200, 0xFFFFFF, 0x000000, 0xFF0000, 0xFFFF00);
coloredSquare.x = 100;

addChild(coloredSquare);

var coloredSquareBitmap:BitmapData = new BitmapData(coloredSquare.width, coloredSquare.height, true, 0);
coloredSquareBitmap.draw(coloredSquare);

coloredSquare.addEventListener(MouseEvent.MOUSE_MOVE, readColor);
function readColor(evt:Event):void
    {
    var pixelValue:uint = coloredSquare.getPixel(mouseX, mouseY);
    trace(pixelValue.toString(16));
    }
4

3 に答える 3

2

draw()メソッドの2番目のパラメーターとして、正方形の変換行列(平行移動も含まれます)を使用します

例えば

coloredSquareBitmap.draw(coloredSquare,coloredSquare.transform.matrix);
于 2010-04-06T15:36:45.893 に答える
2

使用する

var pixelValue:uint = coloredSquare.getPixel(coloredSquare.mouseX, coloredSquare.mouseY);

そうすれば、mouseX / mouseYは色付きの正方形にローカルになり、ビットマップが複製されます。

于 2010-04-06T15:45:41.200 に答える
2

問題やコードを完全には理解していません。多分これは役立ちます:

coloredSquareBitmap.draw(coloredSquare, coloredSquare.transform.concatenatedMatrix);
于 2010-04-06T15:47:55.563 に答える