Home > flash > BitmapData を使って Flash Player の再生パフォーマンスを改善する方法

BitmapData を使って Flash Player の再生パフォーマンスを改善する方法

以前日本語に翻訳した、「Performance Tips Part I」の中で書かれていた「BitmapData を使った、FlashPlayer に負担の少ないトランジション方法」に関する詳細記事を BIG SPACESHIP さんがエントリしてくださっているので日本語訳しました。

今回はサンプルのソースファイル付きなので、各自ダウンロードしていただいて、swf 画面上部のスイッチを切り替えつつ、そのパフォーマンスの違いを体験してみてください。

添付されている fla ファイルやクラスファイルを見て、自分なりに納得してから、筋が通るように翻訳したつもりですが、翻訳に自信のない箇所はグレーにしておきますので、原文をあたってください。配布ソースファイルは今回のテーマのためのファイルではあるけれども、コードが格好良くて参考になるので、別途解説エントリを書きたいと思います。
とりあえず今日は訳文のみどうぞ~。

The article below is a translation of the article:"BIG SPACESHIP LABS / » Improving Performance with BitmapData". I respect the author Jamie and members of Big Spaceship.
related article:
trick7.com blog: 「Flash Performance Tips Part 1」の日本語訳 (Japanese)


(以下翻訳記事)

Performance Tips Part I に話を戻しますが、BitmapData クラスを利用して、ムービークリップの「スクリーンショット」を動的にキャプチャして、別の画面にトランジション(場面転換)させる手法をお話しましたね。ステージ上にいろいろと配置された PNG 画像やビデオ、ベクターグラフィック等の代わりに、1枚のビットマップ(基本は JPG 画像)としてキャプチャし、その画像を利用するというアイデアです。

私は、この難問をキャシーという我が社の優秀なデザイナーにお願いしました。to come up with something so fantastically slow that there was no way even BitmapData could save it. 彼女はやり遂げてくれました。彼女は、Visualizer からビーチボールの素材や、我々のテーブルサッカーチームのインタビュー映像、アルファ付き PNG の雲の画像等を素材にして作ってくれました。

こちらで結果をご覧いただけます。ダウンロードできるデモ用データもご用意しました。

"Josh" と "Caleb" と書かれている部分をクリックして、何度か映像を切替えてみてください。ステージ上部の "Capture Screenshot" ボタンで、トランジション時にキャプチャ画面のビットマップデータを生成するか、あるいは映像を再生したままトランジションさせるかを選べるようになっています。オンの時は、映像のトランジション時のもたつきがほとんどないかと思います。

キャシーは各トランジション時に使用している方法を次のように説明してくれました:

「簡単な円のアニメーションを水平垂直方向に並べて作ったマスク用アニメーションを用意します。そして、それをさらにネスト化したムービークリップをマスク用ムービークリップとし、ブレンドモード「消去」に設定して、マスク対象となるコンテンツを含むムービークリップの上位レイヤーになるように配置します。「消去」モードを使えば、通常のマスク効果とは逆の効果が得られます。重なったエリアだけを非表示にすることができるのです。(従来の重ねレイヤーでのマスク設定 & setMask() は、重なった部分だけを表示する仕様でしたね。)そのマスク用 MC とコンテンツク MC をさらに1つのムービークリップ包んで、そのクリップのブレンドモードを「レイヤー」に設定します。この「レイヤー」にするということが重要です。そうしないとこのマスキングのトリック成立しません。

こんな感じで、ブレンドモード、ベクター、PNG画像、ビデオ等々、これらの素材を使ってしまうと、滅茶苦茶スローな(描画負荷の高い)サイトになりそうですよね?この問題を解決するために、彼女にいい方法を教えてあげました。この私の記事は Flash 8 Player をターゲットにしています。もちろん FP9 にも対応しております。

このスクリーンショットのテクニックはとてもシンプルです。BitmapData についての知識は特に必要ありません。大体このような感じになります:

_bmp = new BitmapData($draw_mc.getBounds().xMax, $draw_mc.getBounds().yMax, true, 0);
_bmp.draw($draw_mc);
$destination_mc.createEmptyMovieClip(_SCREENSHOT_NAME, $destination_mc.getNextHighestDepth()).attachBitmap(_bmp, 2);
}

あとは、draw したいムービークリップと、結果できたビットマップを attach したい場所を指定するだけでよいのです。それから、実体部分(このサンプルでは "Josh" と "Caleb" のインタビュー)のクリップのタイムラインを、何も素材を配置していないキーフレームに移動させます。複雑な描画を削除してやることで、Flash Player がマスクトランジションだけに専念できるようにしてやるのです。

遅いマシンで試してみることをおすすめします。パフォーマンスにおいて大きな違いがあるのが確認できるでしょう。

Comment:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Trackback:0

TrackBack URL for this entry
http://www.trick7.com/blog/mt-tb.cgi/513
Listed below are links to weblogs that reference
BitmapData を使って Flash Player の再生パフォーマンスを改善する方法 from trick7.com blog

Home > flash > BitmapData を使って Flash Player の再生パフォーマンスを改善する方法

持っている Flash & ActionScript 関連本の中から、自分的おすすめの読む順番をご紹介。各書籍のレビューは books カテゴリからご覧頂けます。
この順番でどう?(AS3.0)
  • Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)
    Adobe Flash CS3 詳細! ActionScript 3.0 入門ノート (DVD付)

    デザイン方面からFlashデビューして、そのままAS2.0を使うようになった人が、難しいと評判のAS3デビューする時の最初の1冊として、とにかく目を通しておくと良いかと思います。プログラミング経験の少ない方でも、サンプルをじっくり読めば、ゼロからのAS3デビュー可。
  • ActionScript 3.0 アニメーション
    ActionScript 3.0 アニメーション
    洋書「Making Things Move!」の日本語訳本。ActionScript3.0で数学的アニメーションを作ることがメインテーマなのですが、前半部分でAS3.0の基礎を分かり易く解説されています。後半の重力, IK, 3D表現等のアニメーション解説も楽しい。僕はこれのAS2.0洋書版を読んでFlashの面白さに気付きました。
  • Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付)
    この次の辞典のような洋書を読む前の事前知識としてこの本の内容を理解しておくといいかも。
  • Essential ActionScript 3.0 (Essential)
    Essential ActionScript 3.0 (Essential)

    900ページ以上ある相当分厚い本。基礎からOOPまでを解説。ほぼ網羅しているので、これを抑えておけばAS3博士になれそう。
  • Actionscript 3.0 Cookbook
    Actionscript 3.0 Cookbook

    ActionScript3.0のリファレンス本。問題とその解決法が1ページぐらいで細分化されているので空いた時間にちょっとずつ読み進められる。WebでAS3のソースを見て勉強する時の字引としても使う。ただ、時期的に初期の本なので、AS3自体が仕様変更してたりするので正誤表は必読。
  • Object-Oriented Actionscript 3.0
    Object-Oriented Actionscript 3.0

    7/23に発売されたFlash&OOP本。AS2.0版は持っているのだけど、オブジェクト指向の初歩的な解説から入って、後半は僕の理解を超える難度になっていきました。今度こそ理解できるか?
この順番でどう?(AS2.0)
  • Foundation Actionscript Animation: Making Things Move (Foundation)
    Foundation Actionscript Animation: Making Things Move (Foundation)

    スクリプトでアニメーションさせる方法を学べる。プログラムの知識というよりも数学や物理の知識が必要。バネの表現や3D表現など、汎用性の高いテクニックを身に付けられ、個人の表現力をレベルアップするのに最適。参考までに、僕が調べた英単語リスト。2007年4月に、AS3対応版も発売されました。
  • ゲーム開発のための数学・物理学入門 Beginning Math and Physics for Game Programmers
    ゲーム開発のための数学・物理学入門  Beginning Math and Physics for Game Programmers

    「Making Things Move!」の世界を突き詰めたい人用のステップアップのための本。行列や物理運動、2D/3D表現。Flashの本ではなく、じっくり読むタイプの本なので、あとまわしにしてもいいかも。
  • Flash 8 Essentials
    Flash 8 Essentials

    Flash8の新機能を紹介。全10章が独立した構成で、興味のある部分から読めます。フィルタやビットマップ、ビデオの使い方とかを、基礎から順を追って理解していけるので、ゼロからスクリプティングできるようになる。僕はビットマップ関連の作業の際のリファレンスとして常用しています。
  • .fla―Idea of Flash Creation
    .fla―Idea of Flash Creation

    上の本でFlash8の基本を身に付けて、それをどう面白い表現に落とし込むかを学べます。深津さんの、試行錯誤・実験しやすいスクリプティング、クラス設計に凄さを感じました。YouTubeやFlickrのAPI、PHPとの連携記事も。
  • FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]
    FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]

    ここまでで表現力が付き、テンションが上がるので、その勢いで難解なオブジェクト指向に挑戦。プログラム経験のない人がいきなり英語のOOP本を読むのは厳しい。この本で継承とかインターフェースとかポリモーフィズムとかの用語を理解しておくといいかも。
  • オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
    オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―

    Flashの本ではありませんが、OOPの概念を気軽に読めるボリュームで解説してくれます。英語と日本語のOOP用語の対応を図るためにも「Object-oriented Actionscript for Flash 8」と併読するのがおすすめ。なんとなく読んでおくだけでも結構違うのでは。
  • Object-oriented Actionscript for Flash 8
    Object-oriented Actionscript for Flash 8

    前半はOOPの利便性や基本の紹介。デザインパターンやMVCの理解。13章からグッと難しくなって大変。Flash8対応。
  • Essential Actionscript 2.0
    Essential Actionscript 2.0

    上の本よりもさらにOOPプログラマ向け。同じOOP本ということでやや重複しており、こちらはMX2004時代の本なので見送ってもいいかも。分かりやすい英語で良著。この本のAS3版が出たら間違いなく買い。

Page Top