【问题标题】:Children interfering with hitTestObject (AS3)儿童干扰 hitTestObject (AS3)
【发布时间】:2013-08-10 00:01:16
【问题描述】:

我正在使用 FlashDevelop 在 as3 中制作游戏。

我有一个按钮类,当玩家与它发生碰撞时会被点击。没问题。点击检测正在工作,点击正在工作,这不是问题。我的按钮类的这个特定扩展在其上方有一个标签(特别是TextField),其中包含一个短字符串。

问题是当我将标签添加为孩子时,它会更改按钮的hitAreaTextField 有一个更大的hitArea,我认为它覆盖了按钮本身的hitArea

我正在寻找的解决方案(任何,不一定全部):

  1. 告诉hitTestObject 忽略按钮子级的hitArea 的方法

  2. 一种标签,这不会成为问题

  3. 一种重新覆盖按钮*的hitArea的方法。

我已经编程了大约两年,所以我可以很好地理解建议,但我只自学了不到一个月的 as3。

*我知道在某些 Flash IDE 中,更改hitArea 非常容易,因为通常有一个简单的窗口可以进行更改。 FlashDevelop 更注重代码,这意味着所有MovieClip()Frame 恶作剧都已被抽象掉。我看到通过代码更改hitArea 的唯一方法是将其分配给Sprite,但这对我来说没有意义,尤其是在这种情况下,因为按钮在其底部延伸Sprite

提前谢谢大家。

我拼凑的一张快速截图。谢天谢地,我可以 TextField.border = true; 并显示确切的 hitArea

http://i.imgur.com/cd83daV.png

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    最简单的方法是在升级内部创建一个透明(0% alpha)精灵,这是命中测试的特定尺寸。然后从那里,你对这个对象而不是像这样的父对象进行测试。 if(player.hitTestObject(upgrade.hitBox)) {

    【讨论】:

    • 我实际上是在做相反的事情,让按钮寻找播放器。即if(Button.hitTestObject(Player)) 问题可能是我正在使用按钮对象进行检查吗?我将尝试与按钮的皮肤进行比较,而不是对象本身。我会告诉你进展如何。
    • 成功了!它现在检查的是图像,而不是对象,而且效果很好。谢谢!现在可以if(Button.skin.hitTestObject(Player))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多