2012-11-02 34 views

回答

1

你似乎有一个电枢链接了。它有一个rootJoint属性,它返回一个IKJoint对象。然后,您可以通过正常的递归通过其孩子()循环:

var rj:IKJoint=yourArmature.rootJoint; 
for (i=rj.numChildren-1;i>=0;i--) { 
    trace(rj.getChildAt(i).bone.name); 
} 

但是,IK通常是一棵树,所以有了这个,你只会得到骨头的一层,所以你很可能需要走更深。所以,当一个IKJoint具有子元素时,创建一个将自行调用的递归函数。

function getBones(j:IKJoint):void { 
    if (j==null) return; // no joint. Seems possible 
    if (j.numChildren==0) return; 
    for (i=j.numChildren-1;i>=0;i--) { 
     var tj:IKJoint=j.getChildAt(i); 
     var tb:IKBone=tj.bone; 
     if ((tj==tb.headJoint)||(j==tb.headJoint)) getBones(tb.tailJoint); 
      else getBones(tb.headJoint); 
     // parse the bone "tb" here 
    } 
} 

然后你从根联合调用这个,并在你的列表中进行一系列的解析。我希望你不会在点击鼠标时获得一个骨骼,因为它们几乎是不可见的,你只能通过IK骨架获得MovieClip的一个元素。

0

我会假设你正在寻找IKManager类:IKManager

像这样的东西,例如(图线电枢的列表):

for (var i=0; i < IKManager.numArmatures; i++){ 
    trace(IKManager.getArmatureAt(i).name); 
} 
+0

这给了我一个骨架列表,但我想要骨骼列表。 – DzeryCZ