BodyListener侦听刚体状态

作者: ladeng6666 分类: Nape 发布时间: 2014-11-16 14:41 阅读: 6,976

《碰撞检测》一节中,我们简单的认识了Nape中的4个碰撞侦听,这一节我们来一起深入了解一下BodyListener侦听器的用法。

《PreListener》不同,BodyListener和刚体的碰撞没有任何的关系,它的作用是侦听刚体的状态变化。

我们知道,为了提升引擎的运行效率,静止不同的刚体,Nape会将其设置为sleep状态,来避免无谓的模拟计算,当刚体再次运动起来的时候,Nape会将其重新设置为wake状态。BodyListener的作用就是侦听刚体在两个状态之间的变换。

你可能会问啦,侦听这个效果有什么用啊?

你肯定玩过愤怒的小鸟吧,在小鸟发射后,需要等到停止之后,才可以继续发射下一只小鸟。这时候,我们可以通过BodyListener来侦听第一个小鸟是否已经停止运动,然后再发射下一个小鸟。

下面我们来看一下BodyListener的具体用法,其结构如下:

各个参数说明如下

  • cbEvent:和PreListener中的cbEvent参数一样,不过对于BodyListener只有SLEEP和WAKE属性才适用,分别对应刚体的两个状态。
  • cbOption:要侦听的刚体类型描述
  • handler:BodyListener事件处理函数,开发者在定义该函数时应遵循以下结构

  • precedence:当不同的事件侦听器同时侦听相同的刚体之间相同的碰撞事件时,触发侦听器的优先权。

其中参数cb是一个BodyCallback对象,该对象只有一个属性body,表示状态发生变化的刚体
BodyListener的使用方法与PreListener类似,如以下代码所示:

在下面的示例中,你可以点击并拖动左侧圆形刚体,来模拟小鸟的弹射。当弹射出去的刚体停止运动后,出发BodyListener侦听器,添加下一个小鸟。点击图片查看动态效果。

Sorry, either Adobe flash is not installed or you do not have it enabled

 

完整的源代码如下:

点击下载源文件

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注