アクセシビリティ

Flash記事

 

Flash グラフィックエフェクト学習ガイド


目次

フィルタのアニメーション化

フィルタを適用したムービークリップをアニメーション化できます。トゥイーンによって結合された個々のキーフレーム上のオブジェクトは、中間フレーム上でトゥイーンされた、対応するフィルタのパラメータを持ちます。一方のフィルタに対応する同じタイプのフィルタがトゥイーンの反対側にない場合は、一致するフィルタが自動的に追加され、アニメーションシーケンスの最後にもエフェクトが適用されるようになります。

Flash ユーザーインターフェイスを使用してフィルタをアニメーション化するには :
  1. 新しい Flash ドキュメントを作成し、「anifilter.fla」という名前で保存します。
  2. フレーム 1 のステージ上でムービークリップインスタンスを作成または追加します。
  3. インスタンスを選択し、[フィルタ] タブを開きます。
  4. [フィルタの追加] ボタンをクリックし、ポップアップメニューから [グロー] を選択します。
  5. [フィルタ] タブで、[ぼかし - 水平] と [ぼかし - 垂直] の値を「25」に変更します。
  6. タイムライン上でフレーム 15 を選択し、F6 キーを押して新しいキーフレームを挿入します。
  7. ムービークリップインスタンスを再度選択し、[フィルタ] タブを開きます。
  8. [ぼかし - 水平] と [ぼかし - 垂直] の値を「2」に変更します。
  9. 右クリックするか (Windows) または Control キーを押しながらクリック (Macintosh) し、ショートカットメニューから [モーショントゥイーンを作成] を選択します。
  10. [制御]-[ムービープレビュー] を選択して、アニメーション化したフィルタをテストします。

メモ : Flash Professional 8 では、カスタムイージング機能によって、トゥイーンの高度な制御に対応しています。

Flash では、トゥイーンの一方の端にフィルタがないことや、フィルタの適用順序が異なることが原因で、モーショントゥイーンが誤動作することはありません。たとえば、ドロップシャドウフィルタを使ってモーショントゥイーンを作成し、トゥイーンの最初のフレームにノックアウトのあるドロップシャドウが適用され、最後のフレームにシャドウ (内側) が適用されていると、モーショントゥイーン内でフィルタの使用法に一貫性がないため、設定が修正されます。この場合、トゥイーンの最初のフレームで使用されたフィルタ設定 (ノックアウトのあるドロップシャドウ) が適用されます。

Flash でアニメーションが誤動作しない仕組みの詳細については、Flash LiveDocs の次のセクションを参照してください。[Flash ユーザーガイド]-[フィルタとブレンドの使用 (Flash Professional のみ)]-[フィルタのアニメーション化について (Flash Professional のみ)]。

ActionScript を使用したフィルタのアニメーション化

Tween クラスのような ActionScript を使用して、実行時にフィルタをアニメーション化できます。これによって、面白いアニメーション効果を Flash アプリケーションに適用できます。

最初の例では、グローフィルタをムービークリップインスタンスに適用します。onEnterFrame イベントハンドラを使用して、ムービークリップに適用されるグローの量をアニメーション化します。

ActionScript を使用してフィルタをアニメーション化するには :
  1. 新しい Flash ドキュメントを作成し、「animFilter.fla」という名前で保存します。
  2. ステージ上にグラフィックを描画し、[修正]-[シンボルに変換] を選択します。
  3. ムービークリップシンボルに名前を付け、[OK] をクリックします。
  4. ステージ上でムービークリップインスタンスを選択し、プロパティインスペクタ内の [インスタンス名] テキストボックスに「my_mc」と入力します。
  5. タイムラインのフレーム 1 に次の ActionScript を追加します。

    import flash.filters.GlowFilter;
    my_mc.filters = [new GlowFilter()];
    var dir:Number = 1;
    my_mc.blur = 10;my_mc.onEnterFrame = function() {
    my_mc.blur += dir;
    if ((my_mc.blur >= 30) || (my_mc.blur <= 10)) {
    dir *= -1;
      }
    var filter_array:Array = my_mc.filters;
    filter_array[0].blurX = my_mc.blur;
    filter_array[0].blurY = my_mc.blur;
    my_mc.filters = filter_array;
    };
    

    こののコードは、ステージ上のムービークリップインスタンスにグローフィルタを適用し、フィルタエフェクトをアニメーション化する onEnterFrame イベントハンドラを定義しています。onEnterFrame イベントハンドラは、10 ピクセルと 30 ピクセルに設定されたぼかしの間で、グローフィルタをアニメーション化します。アニメーションが 30 より大きいか等しくなる、または、10 より小さいか等しくなると、反転します。

  6. Flash ドキュメントの変更を保存し、[制御]-[ムービープレビュー] を選択して、SWF ファイルをテストします。

    メモ : Tween クラスを使用してぼかしフィルタをアニメーション化する例については、Flash LiveDocs の次のセクションを参照してください。[ActionScript 2.0 の学習]-[ActionScript 2.0 によるアニメーション化、フィルタ適用、描画]-[コードによるフィルタ効果の操作]-[ActionScript によるフィルタのアニメーション化]。

フィルタと Flash Player のパフォーマンス

ここでは、Flash ファイル内のムービークリップにフィルタを適用するときに覚えておく必要のある重要な事項を挙げます。オブジェクトに適用するフィルタのタイプ、数、および品質は、再生時に SWF ファイルのパフォーマンスに影響を与えます。オブジェクトに適用するフィルタの数が多いほど、作成した視覚効果を正しく表示するために Flash Player で必要となる計算処理の回数が増えます。したがって、1 つのオブジェクトに適用されるフィルタの数が多くなりすぎないようにする必要があります。

実行時の実際の影響は、フィルタが適用されている画面領域、プレーヤーがフィルタを再描画する頻度によって大きく異なります。プレーヤーは、フィルタが適用されたムービークリップをビットマップとして自動的にキャッシュするため、ムービークリップの各フレームを再描画する必要はありません。ムービークリップが回転、サイズの変更、または外観の変更によって修正されるとき、プレーヤーはクリップとそのエフェクトを再描画します。ムービークリップが変換 (移動) されても、再描画は行われません。ビットマップキャッシュの詳細については、ランタイムビットマップキャッシュに関するセクションを参照してください。

各フィルタには、適用されたフィルタの強さと品質を調整できるコントロールが含まれています。低い設定を使用すると、処理速度の遅いコンピュータでもパフォーマンスが向上します。さまざまなコンピュータで再生するためのコンテンツを作成する場合や、ユーザーが使用できるコンピュータの処理能力がわからない場合は、再生のパフォーマンスを最大化するために、品質レベルを低に設定します。

ヒント : ActionScript を使用してぼかしフィルタを適用する場合、blurX と blurY の値に 2 の乗数 (2、4、8、16、32 など) を使用すると、計算処理が速くなり、パフォーマンスが 20 ~ 30% 向上します。