我正在用as3做一个FlashDevelop游戏。
我有一个按钮类,当玩家与它碰撞时,它会被点击。没问题。命中检测正常,点击有效,这不是问题。我的按钮类的这个特定扩展在它上面有一个标签(特别是一个TextField),包含一个短字符串。
问题是,当我将标签添加为子标签时,它会更改按钮的hitArea。TextField有一个更大的hitArea,我认为它正在覆盖按钮本身的hitArea。
我正在寻找的解决方案(任何,不一定是全部):
hitTestObject忽略按钮子节点的hitArea的方法hitArea的方法*。我已经编程两年了,所以我能很好地理解建议,但我只教了自己不到一个月的as3。
*我知道在某些flash IDE中,更改hitArea是愚蠢的,因为通常有一个很容易实现的窗口。FlashDevelop更注重代码,这意味着所有的MovieClip()和Frame恶作剧都被抽象出来了。通过代码更改hitArea的唯一方法是将其分配给Sprite,但这对我来说没有意义,特别是在这种情况下,因为按钮在其基础上扩展了Sprite
各位,提前谢谢。
一张我拼凑在一起的快速截图。谢天谢地,我可以通过TextField.border = true;来显示确切的hitArea
http://i.imgur.com/cd83daV.png
发布于 2013-08-10 00:37:47
最简单的方法是在升级过程中创建透明(0% alpha)的sprite,这是命中测试的特定维度。然后,从那里开始,对这个对象进行测试,而不是像这样对父对象进行测试。if(player.hitTestObject(upgrade.hitBox)) {
https://stackoverflow.com/questions/18157335
复制相似问题