Adobe
製品
Creative Suiteファミリー
Photoshopファミリー
Acrobatファミリー
Flash Platform
Digital Marketing Suite
Digital Enterprise Platform
Digital Publishing Suite
その他の製品一覧
ソリューション
コンテンツオーサリング
教育
金融機関
デジタルマーケティングソリューション
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア安心のサポート& サービス
アカデミック版のご購入学生、教職員、個人
ライセンスのご購入企業、教育機関、官公庁
販売パートナー
検索
 
情報 サインイン
ようこそ、 カート 注文状況 ユーザー登録
マイアカウント
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション   検索  
ソリューション 会社情報
サポート ラーニング
サインイン ようこそ、 注文状況 ユーザー登録
Qty:
Subtotal
Checkout
Adobe Developer Connection / Flashデベロッパーセンター /

ActionScript 3.0でのアニメーションの作成

著者 Jen deHaan

Jen deHaan
  • Adobe
  • flashthusiast.com

著者 Dan Carr

Dan Carr
  • Dan Carr Design

Content

  • トゥイーン、トランジションおよびイージングについて
  • トランジションクラスとTweenクラスの使用
  • 繰り返しアニメーションの作成
  • 3次元空間でのアニメーション
  • ボーンツールを使用したアニメーション
  • 「ActionScript 3.0としてのモーションのコピー」を使ったアニメーションの作成
  • BitmapDataクラスを使ったアニメーション

作成日

16 April 2009

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

Tags

必要条件

この記事に必要な予備知識

この記事は、Flashオーサリング環境の基本を理解していること、およびActionScriptの使用経験があることを前提にしています。

ユーザーレベル

中級

必要な製品

  • Flash Professional CS4 (Download trial)

ActionScript 3.0言語を使用すると、Adobe Flash Playerのほとんどのエレメントにプログラムによってアクセスできます。ActionScript言語には、アニメーション作成のための専用クラスがいくつか用意されています。これらのクラスにより、タイムラインを使用しなくても、単純なものから複雑なものまで様々なモーション効果を作成できます。

この記事では、普段はActionScriptを使用していない方でも、ActionScript 3.0アニメーション機能を簡単に使用できることを説明します。利用できるオプションを調べて、ムービークリップとコンポーネントをアニメーション化し、SWFアプリケーションにアニメーションを追加する方法を学んでください。

トゥイーン、トランジションおよびイージングについて

ActionScriptの作成済みのクラスから、SWFアプリケーション内の様々な機能やオブジェクトにアクセスすることができます。Tweenクラス、TransitionManagerクラス、イージングクラスを使えば、アニメーションとトランジションをムービーに動的に追加することが簡単になります。これらのクラスを使用するためのプロセスは、ActionScript 2.0バージョンとたいへん似ています。ActionScript 2.0のクラスとActionScript 3.0のクラスの主な違いは、ActionScriptパッケージが、以前の「mx」から「fl」に変わったことです。

ここでは、ActionScript 3.0で利用できるトゥイーン、トランジション、イージングの各オプションの概要を説明します。コードを生成するトゥイーンの基礎から見ていきましょう。

注意:TweenクラスとTransitionManagerクラスは、ActionScript 2.0言語の「mx」コンポーネントパッケージにも存在します。詳細については、ActionScript 2.0ドキュメントの「About the Tween and TransitionManager classes(TweenクラスおよびTransitionManagerクラスについて)」を参照してください。

はじめに

Tweenクラスまたはトランジションクラスを操作する場合は、トランジションパッケージ(イージングを使用することを計画している場合はイージングパッケージ)を読み込むことによってコードを開始します。次のコードをアクションパネルのスクリプトウィンドウの先頭に追加します。

import fl.transitions.*; import fl.transitions.easing.*;

ActionScriptパッケージは、関連するActionScriptクラスのグループです。スクリプトの先頭でトランジションとイージングパッケージを読み込むと、横間隔を保存するために、オブジェクトクラスのクラス名別に、直接パッケージ内のオブジェクトクラスにアクセスできるようになります。また、クラスを読み込む際に、Flash CS4 Professionalに対し、SWFファイルとともにクラスをコンパイルするよう指示されます。

ヒント:ActionScriptの記述に慣れていない場合、初めはコピー&ペーストを多用しましょう。便利なコードスニペットを見つけたら、ファイルにコピー&ペーストし、テキストに入力してスクリプトを作成します。

トランジションとTransitionManagerクラスについて

トランジションとは、ムービークリップに適用できるアニメーションであり、スクリーンの遷移の「イン」と「アウト」を切り替えることができます。ActionScript 3.0には10個の異なるトランジションクラスがあり、イージングメソッドといくつかのオプションパラメータを使用してカスタマイズできます。

Flash CS4 Professionalには、TransitionManagerクラスで使用するための次のトランジションが含まれています。

  • Blinds:スクィーズする矩形のアニメーションマスクを使用して次のスクリーンを表示します。
  • Fade:スクリーンをフェードインしたりフェードアウトしたりします。
  • Fly:特定の方向からスクリーンにスライドインします。
  • アイリス: 拡大するシェイプのアニメーションマスクを使用してスクリーンを表示します。
  • 写真画質: スクリーンを写真撮影のフラッシュのように表示します。
  • ピクセルディゾルブ: 矩形を表示したり非表示にしたりしてスクリーンをマスクします。
  • 回転: 現在のスクリーンを回転させます。
  • スクィーズ: 現在のスクリーンを水平方向または垂直方向に伸縮させます。
  • ワイプ: 水平方向に移動するシェイプのアニメーションマスクを使用してスクリーンを表示します。
  • ズーム: スクリーンを拡大したり縮小したりします。

アニメーションに適用できるカスタマイズは、トランジションによって若干異なります。

TransitionManagerクラスは、トランジションとの連携に使用する管理オブジェクトです。

次のコードでは、Wipeトランジションを作成する方法を示します。

import fl.transitions.*; import fl.transitions.easing.*; // Apply wipe transition TransitionManager.start(img1_mc, {type:Wipe, direction:Transition.IN, duration:2, easing:None.easeNone, startPoint:1});

このコードでは、ステージ上に「img1_mc」という名前のムービークリップインスタンスがあることを前提にしています。ムービーにワイプエフェクトを作成するために必要なのは、この数行のコードだけです。

ターゲットのインスタンスと、トランジションパラメータを含むオブジェクトに渡していることを確認します。パラメータとして、必ず、タイプ、方向、継続時間およびイージングのプロパティと共に、必要となるトランジション固有のその他のプロパティを含めます。

詳細については、『ActionScript 3.0 言語およびコンポーネントリファレンス』のTransitionManagerクラスの項を参照してください。

イージングクラスについて

イージングとは、アニメーションの際、徐々に加速したり減速したりすることをいいます。例えば、アニメーションが始まるとボールが徐々に速度を増していき、アニメーションが終わる直前に速度を落として、完全に停止するような場合です。イージングを加えると、アニメーションがより臨場感に富んだものになります。

Flashには、TweenクラスとTransitionManagerクラスで使用するための6つのイージングクラスが用意されています。

  • Back:オーバーフローエフェクトに似て、同時に一端または両端でトランジションの範囲を超えてアニメーションを拡張します。
  • Bounce:一端または両端でトランジションの範囲内にバウンシングエフェクトを追加します。バウンスの数は継続時間に関連します。継続時間が長ければ長いほど多くのバウンスを作成します。
  • Elastic:一端または両端でトランジションの範囲の外に及ぶ伸縮エフェクトを追加します。伸縮の量は継続時間の影響を受けません。
  • Regular:一端または両端で比較的低速の動きを追加します。この機能によって、加速エフェクト、減速エフェクトまたはその両方が追加されます。
  • Strong:一端または両端で比較的低速の動きを追加します。このエフェクトはRegularのイージングと似ていますが、より大きなエフェクトがあります。
  • None:最初から最後まで、エフェクト、減速または加速なしで一定の動きを追加します。このトランジションは、線形トランジションともいいます。

前述の6つのイージングクラスには、それぞれ3つのイージングメソッドがあります。

  • easeIn:トランジションの最初にイージングエフェクトを付加します。
  • easeOut:トランジションの最後にイージングエフェクトを付加します。
  • easeInOut:トランジションの最初と最後の両方にイージングエフェクトを付加します。

注意:Noneクラスには、前述のTransitionManagerのコード例に示すように、easeNoneメソッドが含まれます。

Flashでこれらのクラスを開くか、ActionScriptエディタにコードを読み込む場合、クラスファイルは次の場所で確認できます。 Adobe\Adobe Flash CS4\Common\Configuration\ActionScript 3.0\projects\Flash\src\fl\transitions。

TransitionManagerクラスの詳細については、『ActionScript 3.0言語とコンポーネントリファレンス』のfl.transitions.easingパッケージの項を参照してください。

Tweenクラスについて

Tweenクラスでは、タイムラインに沿って作成されたトゥイーンと同様に、ステージ上でムービークリップを簡単に移動、サイズ変更およびフェードすることができます。

例えば、ステージをまたがってムービークリップを移動することを考えてみます。オプションとして、次のものが挙げられます。

  • タイムラインにキーフレームを追加し、キーフレーム間にモーショントゥイーンまたはシェイプトゥイーンを挿入できます。
  • onEnterFrameイベントハンドラにコードを記述して、アニメーションを強化できます。
  • 定期的に関数を呼び出すには、setInterval()関数を使用できます。
  • Motionクラスとモーションパッケージのクラスを使用します。
  • あるいは、イージングクラスとともにTweenクラスを使用できます。

トゥイーンアニメーションを作成する最も簡単な方法の1つは、Tweenクラスを使用することです。次のActionScriptを使用します。

import fl.transitions.*; import fl.transitions.easing.*; var myTween:Tween = new Tween(ball_mc, "x", Elastic.easeOut, 0, 300, 3, true);

このActionScriptコード例では、Tweenクラスの新しいインスタンスを作成します。これは、ステージ上のball_mcムービークリップをx軸に沿って(左から右に)アニメーション化します。ムービークリップは、3秒で0ピクセルから300ピクセルまでアニメーション化されます。ActionScriptはelasticイージングメソッドを適用します。これは、液体のモーションエフェクトを使用してアニメーションを戻すまで、ボールがx軸上で300ピクセル先に拡張することを意味します。

次のリストに、Tweenのコンストラクタ、Tween(obj、prop、func、begin、finish、duration、useSeconds)のパラメータを示します。

  • obj(参照):Tweenがターゲットとするオブジェクト
  • prop(ストリング):影響を受ける(obj内の)プロパティ名
  • func(関数):トゥイーンに適用されるイージング関数
  • begin(数値):propの最初の値。つまりプロパティの初期値
  • duration(数値):モーション時間の長さ。この値が負の数または省略される場合、値はinfinityに設定される
  • useSeconds(ブール値):フレーム数ではなく、秒を使用するかどうかを指定するフラグ

上の最初のコード例は、アニメーションの継続時間を秒数で指定するために使用する設定を示しています。秒を使用する代わりに、いくつかのフレームにわたってシンボルをフェードアウトすることもできます。Tweenクラスで秒数の代わりにフレーム数で継続時間を設定するには、最後のパラメータuseSecondsをtrueからfalseに変更します。パラメータをtrueに設定すると、指定した継続時間を表す単位が秒であることをFlashに伝えます。あるいは、パラメータをfalseに設定すると、継続時間はトゥイーンを使用するフレームの数になります。例えば、次のコードを検討してみます。

import fl.transitions.Tween; import fl.transitions.easing.*; var myTween:Tween = new Tween(ball_mc, "alpha", Strong.easeIn, 1, 0, 24, false);

このコード例では、ball_mcインスタンスをStrong.easeInイージングメソッドを使用してフェードアウトさせています。インスタンスを3秒間でフェードアウトさせるのではなく、インスタンスを24フレームにわたってフェードアウトさせています。秒ではなくフレームを使用すると、柔軟性がはるかに高くなります。しかし、継続時間は現在のFlashドキュメントのフレームレートに紐付けられています。Flashドキュメントで12fps(フレーム/秒)のフレームレートを使用している場合は、前のコードスニペットではインスタンスを2秒間(24フレーム/12fps=2秒)でフェードアウトさせます。しかし、フレームレートが24fpsの場合は、同じコードがインスタンスを1秒間(24フレーム/24fps=1秒)でフェードアウトさせます。継続時間を表すためにフレームを使用する場合、ドキュメントのフレームレートを変更するときに、ActionScriptを修正せずにアニメーションの速度を大幅に変更できます。

詳細については、『ActionScript 3.0言語およびコンポーネントリファレンス』のTweenクラスの項を参照してください。

トランジションクラスとTweenクラスの使用

トランジションクラスおよびTweenクラスを使用して、ActionScriptでアニメーションをムービークリップとコンポーネントに追加できます。トランジションクラスまたはTweenクラスを使用しない場合は、ムービークリップをアニメーション化したり、ムービークリップのアルファ値や座標値を変更するための独自のコードを作成する必要があります。イージングをアニメーションに追加する場合、ActionScript(および数式)を使用するとすぐに複雑になる可能性があります。ただし、特定のアニメーションのイージングを変更する必要があり、これらの作成済みのクラスを使用している場合は、スムーズなアニメーションを作成するために必要な新しい数式を考えるのではなく、別の種類のイージングクラスを選択してみることができます。

トランジションクラスを使用して、ステージ上で拡大していくムービークリップをアニメーション化するには、以下の手順に従います。

  1. ファイル/新規作成を選択して、新しいActionScript 3.0ドキュメントの作成を選択します。「OK」をクリックして、新しいFLAファイルを作成します。
  2. ファイル/読み込み/ステージに読み込みを選択し、FLAファイルに読み込むハードドライブ上のイメージを選択します。イメージはビットマップイメージとしてファイルに読み込まれるため、イメージを手動でムービークリップシンボルに変換する必要があります。「開く」をクリックしてイメージを読み込みます。
  3. ステージで読み込んだイメージを選択し、修正/シンボルに変換(F8)を選択します。シンボルにimg1という名前を付け、ムービークリップのビヘイビアを設定しているか確認します。シンボルの基準点は、デフォルトではシンボルの左上隅になります(図1を参照)。
デフォルトで左上隅に設定されている基準点
図1. デフォルトで左上隅に設定されている基準点
  1. 「OK」をクリックして、ビットマップイメージをムービークリップに変換します。
  2. プロパティインスペクタを開き(イメージが選択された状態で)、ムービークリップにインスタンス名img1_mcを割り当てます。
  3. メインのタイムラインのフレーム1を選択します。次のActionsScriptをアクションパネルに追加します。
import fl.transitions.*; import fl.transitions.easing.*; TransitionManager.start(img1_mc, {type:Zoom, direction:0, duration:3, easing: Bounce.easeOut});
  1. 制御/ムービープレビューを選択し、アニメーションをテストします。イメージはすぐに拡大し、元のサイズに戻る前に若干のバウンシングエフェクトがあります。アニメーションの動きが速すぎる場合は、アニメーションのduration(前のコード例の場合)を1秒から2または3秒に増やします。

イメージが左上隅で固定されているのがわかります。このイメージは右下隅の方向に拡大します。イメージを隅に固定せず、中央から拡大していくようにする場合は、イメージをビットマップから変換するときに(上記の手順2を参照)、シンボルの基準点を変更する必要があります。以下の手順で作業を進めましょう。

  1. ライブラリパネルから、ステージの現在のムービークリップシンボルの横に、ビットマップシンボルのコピーをドラッグします。
  2. ビットマップイメージをステージで選択した状態のまま、F8キーを押してシンボルをムービークリップに変換します。シンボルにimg2という名前を付けます。
  3. 3x3グリッドの中央をクリックし、基準点をビットマップの中央に設定します(図2を参照)。「OK」をクリックします。
真ん中の正方形をクリックして基準点を中央に設定
図2. 真ん中の正方形をクリックして基準点を中央に設定
  1. ステージ上の新しいイメージを選択し、プロパティインスペクタでそのイメージにimg2_mcというインスタンス名を付けます。
  2. メインのタイムラインのフレーム1を選択し、次のActionScriptを既存のコードに追加します。
import fl.transitions.*; import fl.transitions.easing.*; TransitionManager.start(img2_mc, {type:Zoom, direction:0, duration:3, easing: Bounce.easeOut});

上記の手順7で継続時間を変更した場合は、このコード例を修正して同じ数値を使用してください。

  1. 制御/ムービープレビューを選択し、アニメーションをテストします。2つ目のムービークリップは、シンボルの隅からアニメーション化されるのではなく、シンボルの中央から拡大していくようになります。

ここまで説明したきたように、複雑なアニメーションの作成はトランジションを使用すると非常に簡単で、タイムラインでモーショントゥイーンやシェイプトゥイーンを作成する必要はありません。最も重要なのは、イージングメソッドを作成するのに複雑な計算を使用する必要がないという点です。

注意:トランジションの中には、ムービークリップ内の基準点の配置場所が重要な場合があります。基準点を変更すると、SWFファイルでのアニメーションの表示方法に大きく影響する場合があります。

Tweenクラスを使用してオブジェクトをアニメーション化するには、以下の手順に従います。

  1. 新しいActionScript 3.0ファイルを作成し、tweenWithEvent.flaという名前で保存します。
  2. レイヤー1を選択し、assetsという名前に変更します。
  3. レイヤー上にシェイプを描画し、それをシンボルに変換します(F8)。ムービークリップのビヘイビアを選択し、「OK」をクリックします。
  4. インスタンスにimg1_mcという名前を付けます。
  5. 新しいレイヤーを追加して、actionsという名前を付けます。
  6. actionsレイヤーのフレーム1を選択した状態で、アクションパネルを開き、次のコードをスクリプトウィンドウに入力します。
import fl.transitions.*; import fl.transitions.easing.*; function finishHandler(event:TweenEvent):void { // Place your actions here trace("MOTION_FINISH time = "+event.time); } var myTween:Tween = new Tween(img1_mc, "y", Elastic.easeOut, 0, 250, 3, true); myTween.addEventListener(TweenEvent.MOTION_FINISH, finishHandler);

注意:このコード例では、アニメーションをリスンするためにイベントハンドラ関数を割り当てて簡単なトゥイーンを作成する方法を示します。イベントは、アニメーション内の様々なポイントに応答することができるタイミングフックです。motionChange、motionFinish、motionLoop、motionResume、motionStartおよびmotionStopのイベントに応答できます。

  1. 制御/ムービープレビューを選択し、結果を確認します。メッセージ「MOTION_FINISH time = 3」が、ステージ上でのimg1_mcのアニメーションが終了した後に出力パネルに表示されます。

詳細については、『ActionScript 3.0言語およびコンポーネントリファレンス』のTweenクラスの項を参照してください。

繰り返しアニメーションの作成

最初のアニメーションが終了した後もボールを動かす必要がある場合はどうすればよいのでしょうか。この処理を実行するには、少なくとも2つの方法があります。1つは、おそらく最もわかりやすい方法で、motionFinishedベントを使用してボールを再アニメーション化する方法です。この方法のほかに、さらに簡単な方法として、TweenクラスではcontinueTo()メソッドを使用できます。continueTo()メソッドでは、トゥイーンしたアニメーションに対して、現在の値から新しい値へ継続するように指示します。このメソッドの機能については次のActionScriptで確認できます。

import fl.transitions.*; import fl.transitions.easing.*; var ball_tween:Object = new Tween(ball_mc, "x", Regular.easeIn, 0, 300, 3, true); function handleFinish(event:TweenEvent):void { ball_tween.continueTo(0, 3); }; ball_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);

最初のトゥイーンが終了すると、ball_mcムービークリップのトゥイーンは、元の0ピクセルの位置に戻ります(シンボルの基準点がグラフィックの左側に置かれている場合)。

Tweenメソッドには7つの引数がありますが、実際にcontinueTo()メソッドに渡されるのは2つの引数だけです。continueTo()メソッドに渡されない5つの引数(obj、prop、func、beginおよびuseSeconds)は、Tweenクラスの呼び出しで事前に定義した引数を使用します。continueTo()メソッドを呼び出す場合は、obj、prop、func(イージングタイプ)およびuseSeconds引数がTweenクラスの前の呼び出しと同じであることを前提にします。continueTo()メソッドでは、Tweenクラスの呼び出しからのfinish値を使用し、begin引数の値は指定しません。

独自の連続するアニメーションの作成

アニメーションを、x軸に沿って停止せずに繰り返し継続的にアニメーション化することもできます。また、Tweenクラスは、この種類のアニメーションに対し、適切に指定されたyoyo()メソッドで対応します。yoyo()メソッドはmotionFinishedイベントの実行を待機してから、beginパラメータとfinishパラメータを逆にします。アニメーションは、次の例に示すように再び開始されます。

  1. ファイル/新規を選択して、yoyo.flaという名前の新しいActionScript 3.0ドキュメントを開きます。
  2. 矩形ツールを選択し、ツールパネルで線のカラーを「カラーなし」に設定し、塗りのカラーを赤に設定します。ステージ上に、幅が約20ピクセルで高さがステージ全体と同じ高さの矩形を描画します(図3を参照)。
高さがステージと同じで、幅が20ピクセルの赤色の矩形
図3. 高さがステージと同じで、幅が20ピクセルの赤色の矩形
  1. 選択ツールを選択し、矩形をクリックして塗りを選択します。F8キーをクリックして、シェイプをムービークリップに変換します。シンボルにboxという名前を付け、ビヘイビアをムービークリップに設定し、基準点をデフォルト設定(左上隅に設定)のままとします。完了したら「OK」をクリックします。
  2. ステージ上の矩形を選択し、プロパティインスペクタでその矩形にインスタンス名box_mcを付けます。インスタンスの選択を解除する前に、x座標とy座標の両方を0ピクセルに設定し、シェイプをステージの左上隅に移動します。
  3. 新規レイヤーをタイムラインのレイヤー1の上に挿入します。レイヤーの名前をstrokeに変更します。
  4. 矩形ツールを選択し、ツールパネルで塗りのカラーを「カラーなし」、線のカラーを黒に変更します。
  5. strokeレイヤーを選択した状態で矩形を描画し、選択ツールを使用して線を選択します。ステージの幅(デフォルトでは550ピクセル)に合わせて矩形の幅を変更し、矩形の高さをステージの高さ(デフォルトでは400ピクセル)に合わせます。次に、線のx座標とy座標を0ピクセルに設定し、線がステージのサイズに合わせてアウトラインを描くようにします(図4を参照)。
塗りなしで、ステージのサイズに合わせてアウトラインが描かれた矩形
図4. 塗りなしで、ステージのサイズに合わせてアウトラインが描かれた矩形
  1. 手順5で実行したように、別の新しいレイヤーを既存の2つのレイヤーの上に挿入します。新しいレイヤーの名前をactionsに変更します。次のActionsScriptをactionsレイヤーのフレーム1に追加します。
import fl.transitions.*; import fl.transitions.easing.*; var box_tween:Tween = new Tween(box_mc, "x", Regular.easeInOut, 0, stage.stageWidth, 3, true); function handleFinish(event:TweenEvent):void { box_tween.yoyo(); } box_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);
  1. 制御/ムービープレビューを選択します。ボックスは左から右にアニメーションし、また最初から繰り返されます。アニメーションがスムーズではない場合は、ドキュメントのフレームレートを12fpsから24fpsに増やすことができます。ムービーをもう一度テストし、アニメーションの変更を確認します。
  2. ボックスがステージの右端に近づくと、ボックスは手順7で作成した線の外側まで動きます。これはオーサリング環境ではそれほど大きな問題ではないかもしれませんが、Webブラウザでアニメーションを表示した場合(ファイル/パブリッシュプレビュー/HTML)、ステージの右端に近づくと矩形が消えてしまうのがわかります。これを修正するには、矩形を0ピクセルから、ステージの幅からbox_mcムービークリップの幅を差し引いた値の位置までアニメーションする必要があります。これは、手順8のコードを次のように修正して実現することができます。
import fl.transitions.*; import fl.transitions.easing.*; var box_tween:Tween = new Tween(box_mc, "x", Regular.easeInOut, 0, stage.stageWidth - box_mc.width, 3, true); function handleFinish(event:TweenEvent):void { box_tween.yoyo(); } box_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);

ここで、アニメーションをテストし、ボックスがステージの境界線から消えてしまう前にイージングを停止する方法を確認します。

3次元空間でのアニメーション

Flash CS4 Professionalの優れた新機能の1つに、2次元オブジェクトを3次元空間でアニメーション化する機能があります(図5を参照)。オーサリング時環境での新規ツール、DisplayObjectクラスの新規プロパティおよびgeomパッケージによって、オブジェクトの遠近法投影が可能になりました。

3D回転ツールを使用して、3次元空間で回転させた矩形シェイプ
図5. 3D回転ツールを使用して、3次元空間で回転させた矩形シェイプ

DisplayObjectクラスの更新されたプロパティ

DisplayObjectクラスの新規プロパティを使用して、図5に示す回転効果をActionScriptで実現できます。スプライトとムービークリップはすべて、ActionScript 3.0の表示オブジェクトです。ユーザは、この言語の旧バージョンでMovieClipオブジェクトのxプロパティとyプロパティを使用することに慣れていることでしょう。Flash CS4 Professionalでは、xプロパティとyプロパティに、深度を表すzプロパティが加わりました。

ムービークリップとスプライトは、次の変換プロパティにアクセスできます。

  • x
  • y
  • z
  • rotation
  • rotationX
  • rotationY
  • rotationZ
  • scaleX
  • scaleY
  • scaleZ
  • transform

rotationプロパティが3つの異なるプロパティに分割されただけでなく、従来のrotationプロパティも存在することに注意してください。transformプロパティは、より高度な複数プロパティの変換を行うためのマトリックスを処理できます。

前述したように、前バージョンからの変更点は、新しいzプロパティです。zプロパティは、視点からの距離を表します。zプロパティを100に設定したオブジェクトは、zプロパティを50に設定したオブジェクトよりも、視点から離れた距離にあります。図5に示すように、矩形の上端のz座標が下端のz座標より大きい場合、シェイプは後ろに傾いているように見え、回転効果が生まれます。rotationプロパティを使用すると、2次元グラフィック上で簡単に、このような種類の効果を作成できます。

簡単な3次元アニメーションの作成

rotationプロパティを使用すると、魅力的なアニメーション効果を簡単に作成できます。次の例では、enterFrameループを使用して、2次元オブジェクトの連続アニメーションを3次元空間で生成します。

  1. ファイル/新規を選択し、3dRotation.flaという名前の新しいActionScript 3ドキュメントを作成します。
  2. デフォルトレイヤーに、Imageという名前を付けます。
  3. イメージを読み込むか(ファイル/読み込み/ステージに読み込み)、矩形ツールを使用してステージ上で矩形を描画します。
  4. イメージまたはシェイプを選択し、imgという名前のムービークリップシンボルに変換します(F8キー)。
  5. ステージ上で、インスタンスにsq_mcという名前を付けます。
  6. Imageレイヤーの上に、Actionsという名前の新しいレイヤーを追加します。
  7. Actionsレイヤーでキーフレームを選択し、アクションパネルを開きます(F9キー)。
  8. アクションパネルに、次のコードをコピー&ペーストします。
function enterFrameHandler(event:Event):void { sq_mc.rotationY += 5; } addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  1. ムービーをプレビューして(制御/ムービープレビュー)、アニメーションの実行を確認します。imgクリップが、y軸に沿って回転していることに注目してください。視覚的に異なる結果を期待するかもしれませんが、imgクリップが(縦)y軸の周りを回転(スピン)していると思えば理解できます。
  2. コードに戻って、rotationY値をrotationZ値に変更します。
function enterFrameHandler(event:Event):void { sq_mc.rotationZ += 5; } addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  1. ムービーをプレビューして、結果を確認します。イメージクリップが、z軸に沿ってスピンしていることに注目してください。z軸は、視点からオブジェクトの中心を通って空間に突き抜ける直線です。
  2. コードに戻り、rotationXプロパティとrotationZプロパティを組み合わせて指定して、z軸がパースペクティブに表示されることを確認します。
function enterFrameHandler(event:Event):void { sq_mc.rotationY += 5; sq_mc.rotationZ += 5; } addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  1. ムービーをプレビューして、結果を確認します。2次元のオブジェクトが、3次元空間内でねじれて表示されていることに注目してください。

注意:ENTER_FRAMEイベントは、すべてのスプライトとムービークリップに含まれています。このような種類のオブジェクトのいずれかのタイムラインにイベントハンドラを追加すると、関連するイベントハンドラ関数は、そのフレームレートで繰り返し呼び出されます。プロパティインスペクタでムービーのフレームレートを変更すると、アニメーションの速度を速くしたり遅くしたりすることができます。

3Dアニメーションへの高度なアプローチ

ActionScript 3.0のgeomパッケージが更新され、3D変換を操作するための専用クラスがいくつか追加されました。

  • Matrix3D
  • Orientation3D
  • PerspectiveProjection
  • Utils3D
  • Vector3D

Matrix3Dクラスを使用すると、3つの軸をすべて同時に変換することができます。これにより、パフォーマンスとコードの効率性が格段に向上します。PerspectiveProjectionクラスを使用すると、Matrix3Dインスタンスを明示的に作成しなくても、オブジェクトやビューに3D変換を簡単に適用できます。Orientation3D、Utils3D、Vector3Dの各クラスは、3D変換の作成を支援するためのサポートユーティリティとオブジェクトを提供します。

rotationプロパティを使用すると、魅力的なアニメーション効果を簡単に作成できます。次の例では、enterFrameループを使用して、2次元オブジェクトの連続アニメーションを3次元空間で生成します。

  1. ファイル/新規を選択して、projectionCenter.flaという名前の新しいActionScript 3.0ドキュメントを作成します。
  2. デフォルトレイヤーにAssetsという名前を付けます。
  3. 矩形ツールを使用して、ステージ上で幅と高さが約150ピクセルの矩形を描画します。
  4. 矩形を選択し、整列パネルを使用して、ステージ上のオブジェクトを中央に配置します。
  5. シェイプを選択して、squareという名前のムービークリップシンボルに変換します(F8キー)。
  6. ステージ上で、インスタンスにsquare1という名前を付けます。
  7. インスタンスを選択してコピーし、Control + Shift + Vキーを押して、最初の正方形の上に2つ目の正方形をペーストします。新しいインスタンスにsquare2という名前を付けます。
  8. 楕円ツールを使用して、幅と高さが約15ピクセルの円を描画します。
  9. 円を選択して、circleという名前のムービークリップシンボルに変換します。円シンボルの基準点が中央に設定されていることを確認します。
  10. 円インスタンスにfocalPtという名前を付けます。
  11. Assetsレイヤーの上に、Actionsという名前の新しいレイヤーを追加します。
  12. Actionsレイヤーでキーフレームを選択し、アクションパネルを開きます(F9キー)。
  13. アクションパネルに、次のコードをコピー&ペーストします。
// Set position in the z axis square1.z = 200; square2.z = 500; // Flag while dragging circle var isDragging:Boolean = false; // Change the projection center in relation to the // circle while it's being dragged... function dragPressHandler(event:Event) { isDragging = true; focalPt.startDrag(); } function dragMoveHandler(event:Event) { if( isDragging ){ root.transform.perspectiveProjection.projectionCenter = new Point(focalPt.x, focalPt.y); } } function dragReleaseHandler(e:Event) { focalPt.stopDrag(); isDragging = false; root.transform.perspectiveProjection.projectionCenter = new Point(focalPt.x, focalPt.y); } focalPt.addEventListener(MouseEvent.MOUSE_DOWN, dragPressHandler); focalPt.addEventListener(MouseEvent.MOUSE_MOVE, dragMoveHandler); focalPt.addEventListener(MouseEvent.MOUSE_UP, dragReleaseHandler);

スクリプトが実行する最初の処理は、focalPtインスタンスに対して、2つの正方形を空間(z軸)内で後方に配置することです。focalPtインスタンスについては、z軸の調整はありません。

  1. ムービーをプレビューして(制御/ムービープレビュー)、アニメーションの実行を確認します。スクリーン内で円をゆっくりドラッグすると、フォーカルポイントの位置を基準に、ルートタイムライン上のオブジェクトの投影が変化するのがわかります。

PerspectiveProjectionクラスの操作の詳細については、Flashドキュメントの「Projecting 3D objects onto a 2D view(2次元ビューへの3次元オブジェクトの投影)」を参照してください。

ボーンツールを使用したアニメーション

Flash CS4 Professionalのもう1つの優れた新機能は、ボーンツールを使用した骨格の作成機能です。 骨格は、クリックまたはアニメーション化したときに、相互に連動して動くように連結されている一連のシンボルまたはシェイプです。アニメーションのこのメソッドをインバースキネマティック(IK)と呼びます。古典的な例として、糸につながれた操り人形があります。人形の手足は、ジョイントで相互に連結されています。操り人形師が糸のどれかを動かすと、そのジョイントに連結された手足は、位置が変わった手足に連動して動きます。

骨格は、Flashのオーサリング環境に新しい視覚状態を追加します(図6を参照)。オブジェクトの中心をつなぐ線をボーンと呼びます。ボーンを連結するジョイントを選択すると、骨格の各セクションに一意のプロパティと制約を適用できるようになります。

骨格を追加したシェイプ(左)と、ボーンを付加した複数のシンボル(右)
図6. 骨格を追加したシェイプ(左)と、ボーンを付加した複数のシンボル(右)

骨格の構築

まず知っておくべきことは、骨格は実行時に動的に作成できないということです。骨格は、オーサリング時にFlash CS4 Professionalのボーンツールを使用して作成する必要があります。これは簡単です。

骨格を作成したら、作成した骨格をムービークリップ内に保存し、実行時にActionScriptを使用してアニメーション化できます。プログラムによるアニメーションでは、骨格に関する作業は2つの手順から構成されます。最初の手順では、FlashのFLAファイル内で骨格を構築します。

以下の手順に従って、骨格を作成します。

  1. ファイル/新規を選択して、armature.flaという名前の新しいActionScript 3.0ドキュメントを作成します。
  2. デフォルトレイヤーにAssetsという名前を付けます。
  3. 楕円ツールを使用して、幅と高さが約10ピクセルの円をステージ上に描画します。
  4. 円を選択し、整列パネルを使用してステージ上のオブジェクトを中央に配置します。
  5. 円を選択して、シンボルに変換します(F8キー)。基準点が中央に設定されていることを確認します。
  6. インスタンスを4回複製して、複製したインスタンスを最初の円の上下左右に配置します。左右の円の下に、さらに2つの複製を追加します(図7を参照)。
骨格のセグメントをつなぐボーンマーカー
図7. 骨格のセグメントをつなぐボーンマーカー
  1. ツールバーからボーンツールを選択します。グループの最上部にある円をクリックし、その下にある円までドラッグします。最初のクリックによって、他のすべてのジョイントがヒンジのように動くルートジョイントが定義されます。ボーンマーカーを表すために描画された線に注目してください。
  2. ボーンツールで円を1つずつクリック&ドラッグしていき、最終的にすべての円を論理的な順序で連結します。ボーンセクションを選択して「削除」ボタンをクリックすると、ボーンセクションを削除できます。ジョイントの構成によって骨格のビヘイビアが変化する様子は、見ていて楽しいものです。
  3. ボーンマーカーのエンドジョイントにある円をクリックして、プロパティインスペクタで制約プロパティを編集します。まず、すべての変換プロパティを有効にし、次に制約の追加とプロパティの削除を試します。
  4. 実行時の操作用に骨格を設定するには、骨格レイヤーの最初のキーフレームをクリックして選択します。プロパティインスペクタで、「種類」オプションフィールドを「オーサリング時」から「実行時」に変更します(図8を参照)。
実行時に使用する骨格の設定
図8. 実行時に使用する骨格の設定

骨格のアニメーション化

この例では、アニメーションは実際に骨格のビヘイビアの一部として動作します。ムービーをパブリッシュする際には、円をクリックして、円が相互に連動して動くのを確認できます。骨格セグメントの見栄えを整え、魅力あるアニメーションの土台とするには、次のコードを追加して、ActionScriptを使用した骨格の分析とジョイント間の線の描画を行います。

以下の手順に従って、サンプルを完成させます。

  1. armature.flaファイルに戻ります。
  2. Actionsという名前の新規レイヤーを作成します。
  3. Actionsレイヤーの最初のフレームを選択して、アクションパネルを開きます。アクションパネルに、次のコードをコピー&ペーストします。
import fl.ik.*; import flash.display.Sprite; // Retrieve the armature and the root joint var armInst:IKArmature = IKManager.getArmatureAt(0); var rootJnt:IKJoint = armInst.rootJoint; var lineContainer:Sprite = new Sprite(); // Add a container for drawing lines // to the bottom of the display object stack addChild(lineContainer); setChildIndex(lineContainer, 0); // Traverse the armature and draw lines to // connect the joint... function drawConnectingLines(jnt:IKJoint):void { var len:uint = jnt.numChildren; for(var n:uint=0; n<len; n++) { var childJnt:IKJoint = jnt.getChildAt(n); var childClip1:DisplayObject = getChildByName(childJnt.bone.headJoint.name); var childClip2:DisplayObject = getChildByName(childJnt.bone.tailJoint.name); lineContainer.graphics.lineStyle(3, 0xCCCCCC); lineContainer.graphics.moveTo(childClip1.x, childClip1.y); lineContainer.graphics.lineTo(childClip2.x, childClip2.y); drawConnectingLines(childJnt); } } // Update line drawing every frame function enterFrameHandler(event:Event):void { lineContainer.graphics.clear(); drawConnectingLines(rootJnt); } addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  1. ムービーをプレビューして(制御/ムービープレビュー)、結果を確認します。円をクリックして、様々な場所にドラッグします。移動、および移動に対する制約が、骨格のジョイントの設定に基づいてどのように調整されるのかを観察してください。
  2. ジョイント値を変更して、結果がどのようになるかも試してみてください。

この機能の詳細については、Flashドキュメントの「About inverse kinematics(インバースキネマティックについて)」を参照してください。

「ActionScript 3.0としてのモーションのコピー」を使ったアニメーションの作成

ActionScript 3.0に関連するもう1つの強力なアニメーション機能に、タイムラインベースのモーショントゥイーンをコピーし、ActionScript 3.0コードとしてペーストする機能があります。Flash CS4 Professionalには、3DアニメーションをActionScriptベースのトゥイーン定義にコピーする機能が新たに加わりました。この機能を使用すると、ActionScriptを初めて使用する場合でも、動的なスクリプトベースのアニメーションコントロールを作成できます。

モーショントゥイーンの次のプロパティをコピーできます。

  • ブレンドモード
  • カラー
  • カスタムイージング
  • フィルタ
  • モーションガイド
  • 位置
  • 回転
  • 伸縮
  • 傾斜

「ActionScript 3.0としてのモーションのコピー」コマンドは、コピーしたトゥイーンプロパティをActionScript定義またはXML定義として適用します。XMLはトゥイーンを記述するための効率的な方法ですが、Flash CS4 ProfessionalではデフォルトでAnimatorFactoryクラスにプロパティ値を配列として適用します。

「ActionScript 3.0としてのモーションのコピー」を使用してアニメーションを作成するプロセスは簡単です。まず、タイムラインに沿ってトゥイーンをビジュアルに作成し、必要なエフェクトを作成します。トゥイーンインスタンスを右クリックすると、「ActionScript 3.0としてのモーションのコピー」または「モーションをコピー」に対するオプションを選択できます。

「モーションをコピー」の使用とアニメーションの適用

ひとまず編集するだけで、トゥイーンのプロパティを保存する必要がない場合は、「モーションをコピー」コマンドを使用してトゥイーンをコピーし、そのコピーを独自のファイルや別のファイルなどにペーストするだけです。

ここでは、「モーションをコピー」コマンドを使用して、トゥイーンアニメーションのプロパティのコピーを生成し、このプロパティを別のファイルのインスタンスに適用します。

オブジェクト間のトゥイーンをコピー&ペーストするには:

  1. 新しいActionScript 3.0ファイルを作成し、tween1.flaという名前で保存します。
  2. ステージの左上隅にシェイプを描画します。
  3. シェイプを選択してシンボルに変換し(F8キー)、アニメーション化できるようにします。表示されたダイアログボックスで、ムービークリップのビヘイビアを選択し、基準点を中央に設定します。
  4. インスタンスを右クリックし、「モーショントゥイーンを作成」オプションを選択します。タイムラインがフレーム24まで拡張し、赤色の現在のフレームインジケータがフレーム24に移動します。
  5. インスタンスを選択し、ステージの右下にドラッグします。
  6. モーションガイドラインをクリックし、上方向にドラッグしてトゥイーンのパス内に曲線を作成します。
  7. インスタンスを右クリックし、「モーションをコピー」オプションを選択します。
  8. 新しいActionScript 3.0 FLAファイルを作成し、tween2.flaという名前で保存します。
  9. シンボルを作成し、インスタンスを右クリックします。「モーションをペースト」オプションを選択し、コピーしたトゥイーンをペーストします。タイムラインが拡張し、元のトゥイーンと同じ状態を示していることに注意してください。
  10. 「ムービープレビュー」コマンドを実行し、適用されたアニメーションを確認します。

「ActionScript 3.0としてのモーションのコピー」の使用とアニメーションの適用

トゥイーンを生成するコードを再使用できるようにする場合は、「ActionScript 3.0としてのモーションのコピー」コマンドを使用します。

ここでは、「ActionScript 3.0としてのモーションのコピー」コマンドを使用して、トゥイーンアニメーションのプロパティのコピーを生成し、このプロパティを別のファイルに適用します。

再使用可能なActionScript 3.0アニメーションを作成するには:

  1. 新しいActionScript 3.0ファイルを作成し、tween3.flaという名前で保存します。
  2. ステージ上でシェイプを描画し、シンボルに変換します。
  3. インスタンスにshape_mcという名前を付けます。この手順は特に重要ではありませんが、トゥイーンから生成されたコードにはインスタンス名が含まれています。
  4. インスタンスを右クリックし、「モーショントゥイーンを作成」オプションを選択します。
  5. インスタンスを選択し、ステージ上で新しい位置にドラッグします。
  6. モーションガイドラインをクリックし、上方向にドラッグしてトゥイーンのパス内に曲線を作成します。
  7. インスタンスを右クリックし、「ActionScript 3.0としてのモーションのコピー」オプションを選択します。
  8. 新しいActionScript 3.0 FLAファイルを作成し、tween4.flaという名前で保存します。
  9. 新しいファイルのステージ上でシェイプを作成し、シンボルに変換します。
  10. プロパティインスペクタでインスタンスにshape_mcという名前を付けます。
  11. actionsという名前の新しいレイヤーを追加します。
  12. タイムラインのフレーム1上のキーフレームを選択し、アクションパネルを開きます(F9キー)。手順6でコピーしたコードを、テキストエディタ内にペーストします。コードは、次のようになります。
import fl.motion.AnimatorFactory; import fl.motion.MotionBase; import flash.filters.*; import flash.geom.Point; var __motion_shape_mc:MotionBase; if(__motion_shape_mc == null) { import fl.motion.Motion; __motion_shape_mc = new Motion(); __motion_shape_mc.duration = 30; // Call overrideTargetTransform to prevent the scale, skew, // or rotation values from being made relative to the target // object's original transform. // __motion_shape_mc.overrideTargetTransform(); // The following calls to addPropertyArray assign data values // for each tweened property. There is one value in the Array // for every frame in the tween, or fewer if the last value // remains the same for the rest of the frames. __motion_shape_mc.addPropertyArray("x", [0,3.97311,8.40006,13.3186,18.7471,24.7331,31.3031,38.4825,46.2956,54.7578,63.8896,73.665,84.0945,95.1365,106.738,118.856,131.428,144.384,157.653,171.187,184.905,198.775,212.74,226.781,240.837,254.924,268.981,283.03,297.043,311]); __motion_shape_mc.addPropertyArray("y", [0,13.5007,26.857,40.057,53.0306,65.7758,78.2331,90.3444,102.053,113.294,124.016,134.125,143.585,152.323,160.286,167.446,173.783,179.291,183.979,187.877,191.01,193.423,195.157,196.26,196.773,196.742,196.207,195.207,193.776,191.95]); __motion_shape_mc.addPropertyArray("scaleX", [1.000000]); __motion_shape_mc.addPropertyArray("scaleY", [1.000000]); __motion_shape_mc.addPropertyArray("skewX", [0]); __motion_shape_mc.addPropertyArray("skewY", [0]); __motion_shape_mc.addPropertyArray("rotationConcat", [0,-4.13792,-8.27584,-12.4138,-16.5517,-20.6896,-24.8275,-28.9655,-33.1034,-37.2413,-41.3792,-45.5172,-49.6551,-53.793,-57.931,-62.0689,-66.2068,-70.3447,-74.4827,-78.6206,-82.7585,-86.8964,-91.0344,-95.1723,-99.3102,-103.448,-107.586,-111.724,-115.862,-120]); __motion_shape_mc.addPropertyArray("blendMode", ["normal"]); // Create an AnimatorFactory instance, which will manage // targets for its corresponding Motion. var __animFactory_shape_mc:AnimatorFactory = new AnimatorFactory(__motion_shape_mc); // Call the addTarget function on the AnimatorFactory // instance to target a DisplayObject with this Motion. // The second parameter is the number of times the animation // will play - the default value of 0 means it will loop. // __animFactory_shape_mc.addTarget(<instance name goes here>, 0); }
  1. コードの最後の行からコメントを削除し、<instance name goes here>テキストを、アニメーション化するインスタンス名に置き換えて、0をアニメーションのループ回数に更新します。
__animFactory_shape_mc.addTarget(shape_mc, 1);
  1. 「ムービープレビュー」コマンドを実行し、適用されたアニメーションを確認します。

「XML形式でモーションをコピー」コマンドの使用

アニメーションのプロパティをモーションXMLフォーマットで保存する場合は、コマンドメニューの「XML形式でモーションをコピー」コマンドを使用します。

ここでは、「XML形式でモーションをコピー」コマンドを使用して、XMLとコードを生成し、それらを別のファイルに適用します。

ActionScript 3.0 Motion XMLアニメーションを作成するには:

  1. 新しいActionScript 3.0 FLAファイルを作成し、tween5.flaという名前で保存します。
  2. ステージ上でシェイプを描画し、シンボルに変換します。
  3. フレーム20にキーフレームを追加して、タイムラインを拡張します。フレーム20のシェイプのインスタンスを、新しい位置に移動します。必要に応じて、アルファ、回転、変換の各プロパティを変更します。
  4. インスタンスを右クリックし、「クラシックトゥイーンを作成」オプションを選択します。
  5. 選択範囲内の2つのキーフレームなどの、クラシックトゥイーンを含めたレイヤー全体を選択します。
  6. 選択範囲を右クリックし、コマンド/XML形式でモーションをコピーを選択します。
  7. 新しいActionScript 3.0 FLAファイルを作成します。tween6.flaという名前でファイルを保存します。
  8. ステージ上でシェイプを描画し、シンボルに変換します。
  9. ステージのインスタンスにshape_mcという名前を付けます。
  10. 新しいレイヤーを追加して、actionsという名前を付けます。
  11. actionsレイヤーの最初のフレームを選択してアクションパネルを開きます。次のコードを追加して、モーションXMLを保持する変数を作成します。
import fl.motion.Animator; var my_mc_xml:XML =
  1. 最後の手順の等号記号(=)の後にカーソルを置いて、クリップボードからモーションXMLをペーストします。コードは次のようになります。
import fl.motion.Animator; var my_tween_xml:XML = <Motion duration="20" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*"> <source> <Source frameRate="30" x="80.45" y="83" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1"> <dimensions> <geom:Rectangle left="-35.45" top="-41" width="70.95" height="82"/> </dimensions> <transformationPoint> <geom:Point x="0.4996476391825229" y="0.5"/> </transformationPoint> </Source> </source> <Keyframe index="0" tweenSnap="true" tweenSync="true"> <tweens> <SimpleEase ease="0"/> </tweens> </Keyframe> <Keyframe index="19" x="326" y="201.95" rotation="135"/> </Motion>
  1. モーションXML記述の後に次のコードを追加して、Animatorインスタンス内のトゥイーンを再生します。Animatorクラスのコンストラクタは、モーションXMLインスタンス名とターゲットインスタンス名の2つのパラメータを受け取ることに注目してください。
var my_animator:Animator = new Animator(my_tween_xml, shape_mc); my_animator.play();
  1. 「ムービープレビュー」コマンドを実行し、アニメーションの再生を確認します。このプロセスは同じファイル内、またはプロジェクト内の複数のファイルで必要な回数繰り返すことができます。

注意:Flash CS3 ActionScript 3.0 FLAファイル内でトゥイーンを作成するか、クラシックトゥイーンを使用する場合、Flashではトゥイーン記述にモーションXMLを使用するようにデフォルト設定されます。

モーションXMLフォーマットの詳細については、『ActionScript3.0言語およびコンポーネントリファレンス』の「Motion XML Elements(モーションXMLのエレメント)」を参照してください。

BitmapDataクラスを使ったアニメーション

BitmapDataクラスを使用すると、ActionScriptでビットマップイメージを動的に生成できます。BitmapDataクラスは、ビデオやインポートされたイメージの操作に使用するのが最も一般的ですが、それ以外にも、最初からグラフィックをレンダリンクするときや、ベクターデータのコンテンツからグラフィックをレンダリングするときにも使用できます。

この強力なクラスには幅広い用途がありますが、アニメーションにおける最も日常的な用途の1つは、膨大な量のベクターイメージのスナップショットの取得です。これにより統合ビットマップが生成され、より滑らかアニメーション効果を実現できます。ビットマップは、ベクターのようにすべてのフレームで再描画する必要がありません。したがって、このアプローチが使用できれば、膨大な量のベクターデータコンテンツを含むトランジションエフェクトやぼかしエフェクトのパフォーマンスが格段に向上します。

BitmapDataクラスを使用したトランジションを作成するには、以下の手順に従います。

  1. ファイル/新規を選択して、bitmapdata.flaという名前の新しいActionScript 3.0ドキュメントを作成します。
  2. デフォルトレイヤーに、Actionsという名前を付けます。
  3. actionsレイヤーの最初のフレームを選択して、アクションパネルを開きます。
  4. アクションパネルに、次のコードをコピー&ペーストします。
import fl.transitions.*; import fl.transitions.easing.*; // Generate overlapping vector // graphics in a Sprite container... function createRectangle(x:Number, y:Number, w:Number, h:Number):void { var sprt:Sprite = new Sprite(); sprt.graphics.lineStyle(Math.random()*2, 0×000000); sprt.graphics.beginFill(0×00FFCC); sprt.graphics.drawRect(0, 0, w, h); sprt.graphics.endFill(); sprt.x = x; sprt.y = y; imageContainer.addChild(sprt); } var imageContainer:Sprite = new Sprite(); addChild(imageContainer); // Randomly build 200 of graphics for(var n:Number=0; n<200; n++) { var useX:Number = Math.random()* 400; var useY:Number = Math.random()* 400; var useW:Number = Math.random()* 400; var useH:Number = Math.random()* 400; createRectangle(useX, useY, useW, useH); } // Tween to fade out var fadeOut:Tween = new Tween(imageContainer, "alpha", Strong.easeOut, 1 , 0, 78);
  1. ムービーをプレビューして(コントロール/ムービープレビュー)、トランジションの再生を確認します。オーバーラップしているベクターをとおして確認できることに注目してください。上記のスクリプトは、ランダムなサイズと位置の矩形を、スプライトコンテナ内のスクリーン上に200個生成します。各フレームで再計算されているベクターシェイプが200個を超えると、アニメーションのパフォーマンスおよび描画上の問題が発生する可能性があります。
  2. コードに戻って、最後の行を次の新しい内容に置き換えます。
// Take a snapshot of the imageContainer sprite // so it can be animated as a single bitmap object // during the transition var fadeOutTarget:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight); fadeOutTarget.draw(imageContainer); // Paint the BitmapData snapshot to a bitmap var fadeOutBitmap:Bitmap = new Bitmap(fadeOutTarget); addChild(fadeOutBitmap); // Remove the sprite containing the vectors. removeChild(imageContainer); // Tween to fade out var fadeOut:Tween = new Tween(fadeOutBitmap, "alpha", Strong.easeOut, 1 , 0, 78);
  1. ムービーを再度プレビューして結果を確認します。統合されたビットマップでは、トランジション中に、ベクターのオーバーラップレイヤーが表示されないことに注目してください。この方法により全体のパフォーマンスが向上するため、他のアニメーションも画面上に同時に表示することができます。また、トランジション中にぼかしのようなビットマップフィルタやPixelBender*フィルタを適用できるという利点もあります。
  2. 詳細については、Flash ProfessionalドキュメントのBitmapDataクラスの項を参照してください。

次のステップ

この記事では、ActionScriptを使用してアニメーションをいかに簡単に作成できるかを示します。これで、最小限の作業量でリッチメディアプロジェクトに必要なエフェクトを追加することができます。ActionScript 3.0の使用の詳細については、ActionScriptテクノロジセンターでオンラインチュートリアル、書籍からの引用、およびサンプルファイルを参照してください。シンタックスと用途については、Flash Help and Supportセンター内にある詳細な「Flashドキュメンテーション」リンクを参照してください。

様々な種類のアニメーションを作成し、プロジェクトでトゥイーンをどのように再利用できるかを確認してみてください。トランジションクラスとTweenクラスおよび「ActionScript 3.0としてのモーションのコピー」コマンドの使用に慣れてきたら、モーションXML定義の動的な生成に挑戦し、ActionScript 3.0クラスを開発するときにこれらの戦略を適用する新しい方法を見つけてください。

More Like This

  • Flash CS4 Missing Manual excerpts: Video, testing and debugging, optimization, and sound
  • Personalized video on the web
  • Character animation with the Bone tool in Flash
  • Creating a simple animation in Flash
  • Exploring the new 3D features in Flash CS4 Professional
  • Creating a simple document in Flash CS4 Professional
  • Advanced character animation in Flash
  • Animation in Macromedia Flash: Squash and Stretch
  • Building Preloaders and Progress Bars in Macromedia Flash
  • Creating an accessible animated presentation in Flash

製品

  • Creative Suiteファミリー
  • Photoshopファミリー
  • Acrobatファミリー
  • Flashプラットフォーム
  • Digital Marketing Suite
  • Digital Enterprise Suite
  • Digital Publishing Suite
  • モバイルアプリ

ソリューション

  • カスタマーエクスペリエンスマネジメント
  • コンテンツオーサリング
  • デジタルマーケティング

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミック版のご購入
  • ライセンスのご購入

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • España
  • France
  • Deutschland
  • Hrvatska
  • Ireland
  • Israel - English
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • Magyarország
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Österreich - Deutsch
  • Polska
  • Portugal
  • România
  • Россия
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Slovenija
  • Slovensko
  • Srbija
  • Suomi
  • Sverige
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • Pacific - English
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

当Webサイトをご利用のお客様は、利用条件およびプライバシーポリシー(2011年9月30日更新)にご同意いただいたものとみなされます。

Reviewed by TRUSTe: site privacy statement