0

我以编程方式创建了一个矢量图形(矩形),重新定位了图形,并设置了一个 MOUSE_MOVE 事件监听器来使用 getPixel() 跟踪图形的颜色信息。但是,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()方法的第二个参数

例如

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 回答