任何人都可以告诉我如何获取骨骼的名称(在骨架中)(例如)鼠标点击。 或者至少我如何通过as3代码获取骨骼列表。
感谢任何想法。
答案 0 :(得分:1)
您似乎已经拥有了一个电枢链接。它有一个rootJoint属性,它返回一个IKJoint对象。然后通过正常for()循环递归传递其子节点:
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
}
}
然后你从root联合调用它,并将你的列表放在一系列的解析中。我希望你不会在鼠标点击时得到骨头,因为它们实际上是不可见的,你只能获得带有IK骨架的MovieClip元素。
答案 1 :(得分:0)
我认为您正在寻找IKManager类:IKManager
例如这样的东西(跟踪骨架列表):
for (var i=0; i < IKManager.numArmatures; i++){
trace(IKManager.getArmatureAt(i).name);
}