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

あなたのやり方はまったく正しくありません:)

これは、ムービー クリップをビットマップに変換する方法です。

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に、 a をキャストして a に変換できないことです。その変換を行うには、次を使用します。BitmapmyHeightMap

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

もちろん、これを行う他の方法があるかもしれません。heightMapこのコードが呼び出される前に を使用する方法を見つけることができればBitmap、より効率的です。

于 2012-06-18T13:07:03.233 に答える