サイトトップ

Director Flash 書籍 業務内容 プロフィール

Adobe Flash非公式テクニカルノート

IKArmature.registerElements()メソッド

ID: FN0907001 Platform: All Version: CS4/ActionScript 3.0 Runtime: Flash Player 10/AIR 1.5

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日


Copyright © 2001-2009 Fumio Nonaka.  All rights reserved.