(たとえば)マウスクリックで(アーマチュアの)ボーンの名前を取得する方法を誰か教えてください。または、少なくとも as3 コードでボーンのリストを取得する方法。
アイデアをありがとう。
(たとえば)マウスクリックで(アーマチュアの)ボーンの名前を取得する方法を誰か教えてください。または、少なくとも as3 コードでボーンのリストを取得する方法。
アイデアをありがとう。
あなたはすでにアーマチュアリンクを持っているようです。IKJoint オブジェクトを返す rootJoint プロパティがあります。次に、通常の for() サイクルを介して、その子を再帰的に渡します。
var rj:IKJoint=yourArmature.rootJoint;
for (i=rj.numChildren-1;i>=0;i--) {
trace(rj.getChildAt(i).bone.name);
}
ただし、IK は通常はツリーなので、これを使用するとボーンのレイヤーが 1 つしか得られないため、より深く歩く必要がある可能性が高くなります。そのため、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 の要素のみを取得できます。