谁能告诉我如何在(例如)鼠标单击时获取骨骼(在骨架中)的名称。或者至少我如何通过 as3 代码获取骨骼列表。
感谢您的任何想法。
你似乎已经有了一个电枢链接。它有一个 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
}
}
然后你从根关节调用它,并将你的列表放在一系列解析中。我希望您不会在单击鼠标时获得骨骼,因为这些实际上是不可见的,您只能获得带有 IK 骨架的 MovieClip 元素。
我假设您正在寻找 IKManager 类:IKManager
例如像这样的东西(跟踪电枢列表):
for (var i=0; i < IKManager.numArmatures; i++){
trace(IKManager.getArmatureAt(i).name);
}