0

そこで、ビットマップデータを使用して地形との衝突検出を決定するフラッシュゲームに取り組んでいます。アイデアは、2セットの地形タイルを用意することでした。1つは実際の地形を上に配置し、もう1つは衝突を判断するための基本色がわずかしかない単純なものです。そうすれば、ヒーローが「高さマップ」上の特定の色に接触した場合、彼の動きを停止、減速、ダメージを受けるか、高さの変化を示すためにスケールアップおよびスケールダウンすることができます。これを行うには、タイル自体を追加するのと同じ方法で、配列を使用してハイトマップタイルの束全体を追加する必要があります。ビットマップデータを介してこれを行うことは、私が予想したよりもはるかに困難であることが証明されており、次のコードを使用するとエラーが発生し続けます。

これは私が得るエラーです:TypeError:エラー#1010:用語は未定義であり、プロパティがありません。

私が知る限り、それはコードの次のビットから来ています:

var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height);

しかし、私は自分が何を間違っているのかわかりません。コード全体は次のとおりですが、配列の部分についてはまだ理解していませんが、最初にこれを機能させる必要があります。残りの部分を自分で理解してみてください。

var heightMapClip = new heightMap();
heightContainer.addChild(heightMapClip);
var heightData:String;
var hContainer:Sprite = new Sprite();
heightMapClip.x=-200;
heightMapClip.y=-200;
var bitmapData:BitmapData = new BitmapData(heightContainer.heightMapClip.width, heightContainer.heightMapClip.height);
bitmapData.draw(heightContainer.heightMapClip);
var myHeightMap:Bitmap = new Bitmap(bitmapData);

heightContainer.addChildAt(hContainer,0);
heightContainer.hContainer.addChild(myHeightMap);

heightContainer.hContainer.addEventListener(Event.ENTER_FRAME, onClick);
function onClick(e:Event):void
{
    var obj:Sprite = e.currentTarget as Sprite;
    var myHeightMap:Bitmap = Bitmap(obj.getChildAt(0));
    var pixelValue:uint = heightContainer.myHeightMap.bitmapData.getPixel(mouseX,mouseY);
    heightData=pixelValue.toString(16);
    if(heightData=="99ff00"){
        trace("Collision Detected");
    }
}

これに関する助けをいただければ幸いです。

4

1 に答える 1

1

heightContainer.addChild(heightMapClip);

これを行うことにより、プロパティheightMapClipをheightContainerに追加しません

heightContainer.heightMapClip.widthこれによりエラーが発生します

しかし、これはありません(存在し、widthプロパティがある限り:))

heightMapClip.width

よろしくps「偶然にそれを解決した」は解決策を指定していません。他の人がそれを見て学ぶことができるように、あなたの質問に答えるためにあなたがしたことを書いてください。

于 2012-06-20T13:29:55.037 に答える