0

当我单击舞台上的图像时,我正在尝试检索颜色值。我打算用它来为我正在开发的游戏创建高度图,使角色在崎岖地形(高度图的具有特定颜色值的部分)上移动得更慢,但我不断收到以下错误:

TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::MovieClip@2fc84f99 to flash.display.Bitmap.
at testGetColor2_fla::MainTimeline/frame1()

到目前为止,这是我的代码:

import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.display.Sprite;

var container:Sprite = new Sprite();

var myHeightMap:Bitmap = Bitmap(heightMap);

this.addChild(container);
container.addChild(myHeightMap);

container.addEventListener(MouseEvent.CLICK, onClick);

function onClick(e:MouseEvent):void
{
    var obj:Sprite = e.currentTarget as Sprite;

    var myHeightMap:Bitmap = Bitmap(obj.getChildAt(0));

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

    trace(pixelValue.toString(16));
}

我究竟做错了什么?

4

2 回答 2

0

你这样做的方式不太正确:)

这是将 MovieClip 转换为位图的方法:

function toBitmap(value:DisplayObject):Bitmap
{
    var bmpData:BitmapData = new BitmapData(value.width, value.height, true, undefined);
    bmpData.draw(value, null, null, null, null, true);

    return new Bitmap(bmpData, "auto", true);
}

然后你可以得到像素。

请记住,RegistrationPoint 必须是 TOP_LEFT。

于 2012-06-18T13:04:40.843 回答
0

问题是您不能像在MovieClip创建. 要进行该转换,请使用以下命令:BitmapmyHeightMap

var bitmapData:BitmapData = new BitmapData(heightMap.width, heightMap.height);
bitmapData.draw(heightMap);
var myHeightMap:Bitmap = new Bitmap(bitmapData);

当然,可能还有其他方法可以做到这一点。如果您能在调用此代码之前找到一种方法heightMapBitmap那将更有效率。

于 2012-06-18T13:07:03.233 回答