如何在bitmapData和对象之间正确使用hitTest?

时间:2011-08-23 15:42:19

标签: flash actionscript-3 bitmapdata

我已将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

我可能完全错了。你能告诉我问题出在哪里吗?

3 个答案:

答案 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()