所以我正在开发一款Flash游戏,我正在使用bitmapdata来确定与地形的碰撞检测。我们的想法是拥有两组地形图块,一套是顶部的实际地形,另一套是仅有几种基本颜色来确定碰撞。这样,如果英雄与“高度图”上的某种颜色接触,他的运动可以停止,减速,他可以受到伤害或者上下放大以显示高度的变化。为了做到这一点,我需要通过一个数组添加一大堆高度图块,就像我添加tile本身一样。 通过bitmapdata执行此操作比我预期的要困难得多,并且在使用以下代码时仍然遇到错误。
这是我得到的错误: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");
}
}
对此的任何帮助将不胜感激。
答案 0 :(得分:1)
heightContainer.addChild(heightMapClip);
通过执行此操作,您不会将属性heightMapClip添加到heightContainer
heightContainer.heightMapClip.width会产生错误
但这不会(只要它存在且具有width属性:))
heightMapClip.width
最好的问候 附: “意外解决”没有指明解决方案。写下你为回答问题所做的工作,以便其他人可以看到并从中学习。