0

所以我正在开发一个 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");
    }
}

对此的任何帮助将不胜感激。

4

1 回答 1

1

heightContainer.addChild(heightMapClip);

通过这样做,您不会将属性 heightMapClip 添加到 heightContainer

heightContainer.heightMapClip.width 这将产生错误

但这不会(只要它存在并且具有宽度属性:))

heightMapClip.width

最好的问候 ps“意外解决”没有指定解决方案。写下您为回答问题所做的工作,以便其他人可以看到并从中学习。

于 2012-06-20T13:29:55.037 回答