- 最后登录
- 2013-6-5
- 注册时间
- 2011-12-3
- 阅读权限
- 90
- 积分
- 6206
- 纳金币
- 6206
- 精华
- 0
|
使用Behavior 类可以使场景动起来并实现交互。Behavior 类实际上提供了一种修改场景图的机制,Behavior 类由刺激(例如鼠标)触发。Behavior 类也有界限和能力位,下面来看一些 Behavior 处理的基本内容。
WakeupCriterion
可以指定触发Behavior 类的条件,包括按键、鼠标事件、定时器或是已播放的帧的数目。可以在最初创建或每次处理Behavior 类的消息时指定触发条件。OrbitBehavior 是一个由鼠标事件唤醒的 Behavior 范例。而通过使用 WakeupOnElapsedTime,可以改变 TranformGroup 的 Transform3D 来使得场景图的一部分动起来。
processStimulus()
当唤醒事件发生时,将会调用Behavior 类的 processStimulus()。程序员可以在 processStimulus()中添加或删除对象,更改变换,更改对象的外观,检测两个对象何时相撞等。记住无论在场景图中做任何更改,都需要设置相关的能力位。例如,要更改 processStimulus()中的 TransformGroup 节点,则需要设置 TransformGroup.ALLOW_TRANSFORM_WRITE 位。
插入器是内置的,它可以帮助您将简单动画添加到场景图中。它们在您所定义的值的范围内平滑地移动或插入。随Java 3D SDK 提供的 GearBox 示例中使用旋转插入器RotationInterpolator来使齿轮动起来。
Alpha 对象会生成一个 0.0 与 1.0 之间的值作为计时之用(请注意Alpha 对象同顶点的 alpha 值无关,后者指定透明度)。
插入器使用 Alpha 对象来实施它们对场景图的更改,Alpha 对象的值可以随时间而改变。每当 Alpha 对象触发 RotationInterpolator 时,RotationInterpolator 使用生成的 alpha 值来计算新的旋转。下面的代码创建了一个以匀速无限循环的 Alpha:
Alpha(int loopCount, long speed) |
|