Вы пытаетесь прочитать поле bmap
из e
, которое является MouseEvent
и не имеет такого поля.
Также Bitmap
не имеет поля с именем bData, но bitmapData
.
Один из способов получить растровое изображение из вашего спрайта - использовать цель события и использовать getObjectsUnderPoint , чтобы получить растровое изображение (в случае, если в вашем спрайте имеется несколько растровых изображений)
Также не забудьте взять координаты мыши с карты, иначе вам придется поиграть с преобразованием точек, используя globalToLocal и LocalToGlobal
// function to get the bitmap from a display object container
// using the mouse coordinate
function findBitmap(container:DisplayObjectContainer):Bitmap {
if (container === null)
return null;
var childs:Array = container.getObjectsUnderPoint(
new Point(container.mouseX, container.mouseY)
);
while (childs.length > 0) {
var ret:Bitmap = childs.pop() as Bitmap;
if (ret !== null)
return ret;
}
return null;
}
// ....
canvas = new Sprite;
addChild(canvas);
canvas.addChild(bmap);
//Mouse Track Pixel Colors
canvas.addEventListener(MouseEvent.CLICK, readPixel);
// ...
function readPixel(e:MouseEvent):void {
// found the bitmap from the currentTarget
var bmap:Bitmap=findBitmap(e.currentTarget as DisplayObjectContainer);
var hex:uint=0;
if (bmap!==null) {
hex = bmap.bitmapData.getPixel32(bmap.mouseX, bmap.mouseY);
}
var pixelAlpha:int = (hex >>> 0x18) & 0xff;
var red:int = (hex >>> 0x10) & 0xff;
var green:int = (hex >>> 0x08) & 0xff;
var blue:int = hex & 0xff;
colorText.text =
"Red:" + red + " Green:" + green + " Blue:" + blue + " Alpha:" + pixelAlpha;
}