我已将PNG转换为位图,然后将其转换为bitmapData。
我有一个名为_player
的对象,我想添加碰撞检测,但我似乎可以让它工作。
我的代码是:
if(bmd1.hitTest(new Point(_player.x, _player.y))){
trace("hit");
}
bmd1是我的bitmapData
,_player
是对象希望测试的对象。
我收到以下错误:
1136: Incorrect number of arguments, Expected 3
我环顾四周但是却找到了我缺少的论据
有什么想法吗?
更新
我试过了
if(bmd1.hitTest(new Point(_player.x, _player.y), 50, _player)){
trace("hit");
}
没有快乐
更新2
对不起,我要提一下,我采用这种方法的原因是我有一个PNG,透明区域,我需要测试非透明区域的碰撞,这就是为什么我正在使用这种方法
我有一个PNG,我导入并转换为位图,然后转换为bitmapData
我可能完全错了。你能告诉我问题出在哪里吗?
答案 0 :(得分:6)
hitTest有3个强制参数:
public function hitTest(firstPoint:Point, firstAlphaThreshold:uint, secondObject:Object, secondBitmapDataPoint:Point = null, secondAlphaThreshold:uint = 1)
检查doc
答案 1 :(得分:1)
最后我将我的播放器movieclip转换为bitmapdata,将我的png映射转换为位图数据,然后使用hitTest检查每个位图相对于彼此的x和y
答案 2 :(得分:0)
你想要的方法是hitTestPoint()而不是hitTest()
编辑:哎呀我错过了你对BitmapData而不是DisplayObject进行了点击测试。 BitmapData.hitTest()执行像素级检测,在许多情况下这种检测非常慢。你可能最好把BitmapData放入Sprite然后使用hitTestPoint()