如何在鼠标中单击as3获取骨骼名称

时间:2012-11-02 11:30:49

标签: actionscript-3 flash

任何人都可以告诉我如何获取骨骼的名称(在骨架中)(例如)鼠标点击。 或者至少我如何通过as3代码获取骨骼列表。

感谢任何想法。

2 个答案:

答案 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);
}