IK 骨架动画处理概述

在创建 IK 骨架后,可使用 fl.ik 类在运行时限制骨架的移动、跟踪其事件并对其进行动画处理。

下图演示了一个名为 Wheel 的影片剪辑。 轴是一个名为 Axle 的 IKArmature 实例。IKMover 类会在轮子旋转时同步移动骨架。骨架中的 IKBone (ikBone2) 在其尾部连接处附加到轮子。


A.
Wheel

B.
Axle

C.
ikBone2

在运行时,轮子结合 __motion_Wheel 补间动画(在“使用补间动画”一章中的描述动画中进行了介绍)进行旋转。由一个 IKMover 对象启动和控制轴的移动。下图演示了附加到旋转轮上的轴骨架在旋转中的不同帧上的两个快照。

在两个不同位置上移动 IK 骨架

在运行时,下面的 ActionScript 可完成以下功能:
  • 获取有关骨架及其组件的信息

  • 实例化 IKMover 对象

  • 结合轮子的旋转移动轴

import fl.ik.* 
 
var tree:IKArmature = IKManager.getArmatureByName("Axle"); 
var bone:IKBone = tree.getBoneByName("ikBone2"); 
var endEffector:IKJoint = bone.tailJoint; 
var pos:Point = endEffector.position; 
 
var ik:IKMover = new IKMover(endEffector, pos); 
ik.limitByDistance = true; 
ik.distanceLimit = 0.1; 
ik.limitByIteration = true; 
ik.iterationLimit = 10; 
 
Wheel.addEventListener(Event.ENTER_FRAME, frameFunc); 
 
function frameFunc(event:Event) 
{ 
    if (Wheel != null) 
    { 
        var mat:Matrix = Wheel.transform.matrix; 
        var pt = new Point(90, 0); 
        pt = mat.transformPoint(pt); 
         
        ik.moveTo(pt); 
    } 
}

用于移动轴的 IK 类为:

  • IKArmature:描述骨架(由骨骼和连接组成的树结构);必须使用 Flash 创建

  • IKManager:文档中所有 IK 骨架的容器类;必须使用 Flash 创建

  • IKBone:IK 骨架的一段

  • IKJoint:两个 IK 骨骼之间的连接

  • IKMover:启动和控制骨架的 IK 移动

有关这些类的完整而详细的说明,请参阅 ik 包