我创建了一个空的影片剪辑。 而且,我刷它。(即)每次点击都用椭圆填充(开始填充)。
如何检查它是否在特定位置填充。(比如400 x 400,x = 0,y = 0)?
答案 0 :(得分:0)
首先,您需要将其转换为bitmapdata格式 然后你将使用函数getPixel来查询它。
import flash.display.Bitmap;
import flash.display.BitmapData;
// Lets say drawingpad is a MovieClip that is getting ellipses drawn on it.
var bitmap:Bitmap = new Bitmap(new BitmapData(stage.stageWidth,stage.stageHeight));
bitmap.draw(drawingpad);
var value:uint = bitmap.bitmapData.getPixel(400,400);
希望这有帮助
答案 1 :(得分:0)
我假设“400 x 400 from x = 0,y = 0”表示0,0到400,400之间的区域。
您需要将MovieClip矩形的内容复制到位图,才能获取有关其像素的信息。
// coordinates as in the question's example, could be method parameters
var x1:int=0;
var y1:int=0;
var x2:int=400;
var y2:int=400;
// bitmap with transparency, with a size of the rectangle to check
var bitmap:Bitmap = new Bitmap(new BitmapData(x2-x1, y2-y1, true, 0x00000000));
// draw the painted mc to the bitmap, displaced to upper left x and y
bitmap.draw(mc, new Matrix(1,0,0,1,-x1,-y1)));
使用getColorBoundsRect
,您可以检查位图是否包含颜色,或者是否包含任何其他颜色。现在检查它是否包含除“透明”之外的任何其他颜色(=任何其他颜色的alpha值> 0):
var maskColor:uint = 0xFF000000; // ignore rgb, only check alpha values
var color:uint = 0x00000000; // 'empty', fully transparent color
// get a rect containing all pixels with not fully transparent colors
var colorBoundsRect:Rectangle = bitmap.getColorBoundsRect(maskColor, color, false);
if (colorBoundsRect.width == 0 && colorBoundsRect.height == 0){
trace("empty"); // rect contains no visible pixels
}
答案 2 :(得分:0)
假设未填充的地方是透明的,那么简单的hitTestPoint
应该可以解决问题:
myObj.hitTestPoint( 400.0, 400.0, true ); // true means we use the pixels of the shape and not the bounding box