IKArmatureクラス |
パッケージ
|
fl.ik
|
継承
|
IKArmature → Object
|
registerElements()メソッド |
文法
|
public function registerElements(stage:DisplayObjectContainer):void[*1]
|
概要
|
インバースキネマティクス(IK)を、アーマチュアが含まれた[ライブラリ]シンボルのインスタンスに対して動作可能にする。
|
引数
|
stage:DisplayObjectContainer − Stageへの参照で、表示リスト内にあるDisplayObject.stageプロパティからアクセスできる。
|
戻り値
|
なし。
|
説明
インバースキネマティクス(IK)を、アーマチュアが含まれた[ライブラリ]シンボルのインスタンスに対して動作可能にします。[ライブラリ]のMovieClipがアーマチュアをもち、実行時にインスタンス化される場合、このメソッドを呼出して実行時のインバースキネマティクス効果を可能にしなければなりません。
[注記] このメソッドは、アーマチュアが最初のシーンの第1フレームにないときは、必ず呼出さなければなりません。
[*1] メソッドの戻り値は、[ヘルプ]ではつぎのように型の指定がないことを示す*とされています。
public function registerElements(stage:DisplayObjectContainer):*
しかし、実際に返される値はundefinedです。したがって、データ型は戻り値のないvoidと解されます。
|
例
以下の例(スクリプト001)でご紹介するのは、インバースキネマティクスの動作を、[ライブラリ]のシンボルが実行時にインスタンス化されたとき、可能にする方法です。[ライブラリ]シンボルはIKPersonというクラス名のMovieClipで[*2]、アーマチュアが含まれています。
スクリプト001■動的に配置したMovieClipインスタンスのインバースキネマティクスの動作を可能にする
import fl.ik.*; // [*3]
// IKPersonとうクラス名の[ライブラリ]シンボルを追加
// シンボル内にはアーマチュアが含まれる
// [ActionScript用に書き出し]をチェックしておく[*2]
var myPerson:IKPerson = new IKPerson();
// MovieClipを表示リストに加える
addChild(myPerson);
// IKPersonのMovieClipにはIKアーマチュアが含まれる
// アーマチュアの名前は"Armature_Person"として[オーサリング時]でなく[実行時]を選択[*4]
var myArmature:IKArmature = IKManager.getArmatureByName("Armature_Person");
// アーマチュアに対してインバースキネマティクスの実行時の動作を可能にする
myArmature.registerElements(stage);
// ユーザーがアーマチュアをドラッグできるようにして
// マウスによるIKの動作を可能にする
IKManager.trackIKArmature(myArmature, true);
|
以下の例(スクリプト002)でご紹介するのは、IKArmature.registerElements()メソッドでシーンの第1フレームにないアーマチュアを初期化する方法です。アーマチュアを初期化するには、つぎのコードをアーマチュアのある最初のフレームに設定します[*5]。
スクリプト002■最初のアーマチュアを初期化する
import fl.ik.*; // [*3]
var arm:IKArmature = IKManager.getArmatureAt(0);
arm.registerElements(stage);
|
[*2] クラスは[シンボルプロパティ]ダイアログボックスで[ActionScript用に書き出し]を選択し、[クラス]のフィールドに入力します。
図001■[シンボルプロパティ]ダイアログボックスで[クラス]を設定
[*3] フレームアクションでは、デフォルトでfl.ikパッケージは自動的にimportされます。したがって、このステートメントは記述しなくても動作します。
[*4] タイムラインのアーマチュアを選択し、[プロパティ]インスペクタでアーマチュアの名前とアニメーションの[種類]を設定します(図002)。
図002■アーマチュアの名前とアニメーションの[種類]を設定
[*5] IKArmatureインスタンスを取得するのに、IKManager.getArmatureAt()メソッドを用いています。したがって、目的のアーマチュアが最初のインデックス(0)にあるか、他にアーマチュアが存在しないことを前提とします。
|
出典
[ActionScript 3.0 Language and Components Reference] > [IKArmature]「registerElements() mehtod」
参考
[ActionScript 3.0言語およびコンポーネントリファレンス] > [IKArmature]「registerElements()メソッド」
作成者: 野中文雄
作成日: 2009年7月24日