所以我正在开发一个 Flash 游戏,我使用位图数据来确定与地形的碰撞检测。这个想法是有两组地形图块,一组在顶部有实际地形,另一组更简单,只有几个基本颜色来确定碰撞。这样,如果英雄接触到“高度图”上的某种颜色,他的移动就会停止、减慢、受到伤害或被放大或缩小以显示高度的变化。为了做到这一点,我需要通过数组添加一大堆高度图图块,就像我添加图块本身一样。事实证明,通过 bitmapdata 执行此操作比我预期的要困难得多,并且在使用以下代码时我不断遇到错误。
这是我得到的错误:TypeError: Error #1010: A term is undefined and has no properties。
据我所知,它来自以下代码:
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");
}
}
对此的任何帮助将不胜感激。