Flash Playerの最近のブログ記事

Adobe のセキュリティー広報から、Flash Player, Adobe Reader, Acrobat に関する脆弱性についての情報が公開されました。(Security Advisory for Flash Player, Adobe Reader and Acrobat

この脆弱性により、クラッシュや攻撃者がシステムのコントロールをできる可能性もあるとのことで、既に攻撃例も見つかっています。

Flash Player に関しては、影響を受けるのは Flash Player 10.0.45.2, 9.0.262 を含め 10.0.x と 9.0.x 全てのバージョンです。Windows 版、Macintosh 版、そして Linux と Solaris 版の全てが対象になります。

現在 Adobe Labs に公開中の Flash Player 10.1 RC7 では、この脆弱性は無い "らしい" ということです。

Adobe Reader と Acrobat については、バージョン 9 のみの問題で、バージョン 8 は大丈夫だそうです。

修正版の公開は決まり次第公開予定になっています。

今週の Google I/O で Flash 関連の発表がいくつか行われました。以下、簡単なまとめです。

Android 向け Flash Player 10.1 パブリックベータ

Android 2.2 公開後に、Android マーケットから Flash Player 10.1 のベータ版がダウンロード可能になります。ブラウザ内で Web サイトを閲覧する際、デスクトップと同様に Flash コンテンツを表示可能です。既に発表されていた通り、Flash Player が対応するのは Android 2.2 以降の OS です。

環境をお持ちの方は、動作確認はもちろんパフォーマンスやバッテリーの消費具合なども確認してみてください。過去のブログに書いたように、デバイス向け Flash Player にはパフォーマンス向上のため、デスクトップ版には無い機能がいくつも実装されています。

Android 向け AIR プレリリースプログラム

AIR for Android の開発者向けプレリリースプログラムが始まりました。(Adobe AIR for Android@Labs) このプログラムに参加すると誰でもベータ版の AIR SDK を入手することができます。

ただし、このプログラム内で入手できる情報を一般に公開することはできません。誰でも参加はできますが、プライベートなプログラムのため、情報共有は参加者間のみに限定されます。この点 Flash Player パブリックベータとは異なりますのでご注意ください。また、このプログラムは英語のみでの提供になります。

プレリリースプログラムへの参加はこちらからどうぞ。(Adobe AIR - Android Developer Prerelease

プリリリースプログラムでは、Flash Professional CS5 から直接 Android 用にパブリッシュする環境を追加する機能拡張も提供されます。

VP8 のサポート

Google I/O で WevM プロジェクトの開始と VP8 ビデオコーデックのオープンソース化についての発表がありました。これに対し、同じく Google I/O のキーノートで、将来の Flash Player での VP8 対応について Kevin Lynch からポジティブな発言がされています。

Vorbis や Matroska については特に言及されていませんが、サウンドもライセンスフリーに向かうのでしょうか?あと、個人的には、VP8 ベースのエンコーダーが Flash Player に載ったりすると嬉しいのですが。(比較的軽いという噂なので)

Google TV の Flash Player 10.1 対応

Google I/O では Android ベースの家電である Google TV が発表されましたが、Google TV でも Flash Player がサポートされます。Google TV には Chrome がブラウザとしてインストールされており、Chrome には Flash Player が含まれることになっているため、Google TV では Flash Player が利用できるということのようです。これにより Google TV では殆ど全ての Web コンテンツが再生できることになります。 (Chrome に Flash Player を統合したのはむしろこっちのためではないかとちょっと勘ぐってしまったり)

下は、実際のデモで Flash Player 10.1 が Google TV 上で実行されている場面です。


ともあれ、Flash Player 10.1 から H.264 ビデオの再生にハードウェアの機能を利用できるようになったことで、映像を扱う家電やデバイスで採用しやすくなったことは確かのようです。Flash ユーザーにとってはより活躍できる場が増えそうですね。

 

ちょっと遅くなりましたが、新しいMac 用の Flash Player のプレビュー版が Adobe Labs に公開されています。(Flash Player "Gala" Preview Release@Labs

Flash Player 10.1 から Windows とデバイス上ではハードウェアを用いたビデオ再生機能が追加されますが、Gala はこの機能を Mac 上でも実現するものです。Apple から今年 3 月頃に公開された、H.264 ビデオデコード用 API (Technical Note TN2267 Video Decode Acceleration Framework Reference) に対応することでハードウェアを利用した HD の H.254 ビデオ再生を実現しています。H.264 のデコードは CPU リソースを消費しがちなため、Mac でもバッテリーの持ちが良くなることが期待されます。

Mac 上でのハードウェアデコード機能はまだあまりテストされていない状態ということもあり、一般的に利用できるようになるのはちょっと先になりそうです。おそらく Flash Player 10.1 公開後のアップデート版で追加されるものと思われます。

Apple の新しい API が利用できる環境は、Mac OS X 10.6.3 がインストールされ、NVIDIA GeForce 9400M, GeForce 320M または GeForce GT 330M の装備されたモデルに限定されます。ということで、Gala がサポートされるモデルは以下に限定されます。

  • 2009 年 1 月 21 日以降に出荷された MacBook
  • 2009 年 3 月 3 日以降に出荷された Mac Mini
  • 2008 年 10 月 14 日以降に出荷された MacBook Pro
  • 2009 年最初の 4 半期以降に出荷された iMac

Mac Pro は対象外です。

Gala のダウンロードはこちらから。(Adobe Labs Downloads/Flash Player) 必ず今インストールされているバージョンを Uninstaller を使って削除してからインストールするようにとのことです。

記事の元ネタとなっている Optimizing Performance for the Flash Platform が更新されました。前のバージョンより 15 ページほど増えています。とりあえず、CPU 編の 「Timer と ENTER_FRAME イベント」 を更新しておきましたのでよろしければご覧ください。その他には主に AIR 関連のトピックが追加されています。

では、Optimizing Performance for the Flash Platform から最後の Tips です。

まず、Flash Player 10.1 から追加された新しいネットワーク関連の機能 2 点です。

サーキュラーバッファリング (circular buffering)

  • ビデオをプログレッシブダウンロードで再生する場合、デスクトップ環境では (Flash Player 10.1 含む) ロードした FLV ファイル全体をローカルディスクにキャッシュする。Flash Player はキャッシュから再生を行う
  • デバイス上では、
    1. FLV のキャッシュに必要な領域が不足
    2. 20 MB 以上のディスク領域 (もし無ければ 4 MB 以上のメモリ) が利用できる - この値はコンパイル時に設定可能
    の条件でサーキュラーバッファリングが行わる
  • サーキュラーバッファリングでは、キャッシュファイルが一杯になると、ファイルの先頭から再利用される
  • ファイル全体がキャッシュされないと再生できないファイル (MP4 の一部のファイル等) を保存する領域が足りないと Flash Player はそのファイルをダウンロードしない

スマートシーク (smart seeking)

  • Flash Media Server 3.5.3 から Flash Player 10.1 にストリーミングを行うとスマートシークが使える
  • 従来の動作は、シークが行われると、バッファされたデータは全て捨てられる
  • スマートシークでは、シーク先がバッファされている範囲内だった場合、再利用できるデータはそのまま使われる。そのため、すぐに再生が開始され、ストリーミングに必要な帯域も削減することができる

あとは、Tips が 3 つあります。

SWF の分割

  • SWF を複数に分割することで読み込みから起動までを高速化できる
  • その際、アセットやロジックが重複してダウンロードされないように注意する
  • RSL (Runtime Shared Library) を使って共通部分をダウンロードし、それを複数の SWF から getDefinition() メソッドを使って利用することが可能 - クラス定義、フォント、ビットマップ、サウンドなどが RSL 化できる

入出力エラー

  • ネットワーク接続が不安定な場合に備えて IOErrorEvent.IO_ERROR イベントのリスナーを定義することが望ましい
  • その際、エラーの発生をユーザーに知らせ、リトライができるようにすることを推奨

Flash リモーティング

  • XML を使った通信はデータ量が多くなり、処理時間もかかるため、少量のデータを送受信するのに適している
  • 大量のデータを送受信する場合は、AMF の使用をするべき
  • AMF を使用する場合、サーバ側には ZendAMF, FluorineFx, WebORB, BlazeDS などのモジュールが必要
  • Flex SDK を使うと、AMF が簡単に利用できる (Flash Professional でも Flex フレームワークの SWC を利用可能)

今回は Optimizing Performance for the Flash Platform から、描画パフォーマンスに関連する Tips です。

StageQuality

  • デバイスは画面サイズが小さいため、イメージの品質の差がデスクトップ環境に比べて分かりにくい
  • デバイスの画面は解像度が高いため、アンチエイリアス無しでも画像の質はあまり低下しない
  • そのため、デバイスでは通常 StageQuality は MEDIUM で十分
    StageQuality.LOW: アンチエイリアスは一切行われない、もっとも高速
    StageQuality.MEDIUM: 一部アンチエイリアスが行われるがビットマップは対象外
    StageQuality.HIGH: アニメーションされるビットマップのみアンチエイリアスされない
    StageQuality.BEST: すべてのビットマップがアンチエイリアスされる、もっとも低速
  • テキストのアンチエイリアスを "読みやすさ優先" にすると、StageQuality の値に係わらず、常にテキストはアンチエイリアス処理される

アルファブレンド

  • アルファ属性を設定した場合、アルファブレンドを必要とするエフェクトの使用は避ける
  • アルファ属性の使用も必要なときのみにするべき

ビットマップキャッシュ

  • ビットマップキャッシュはベクター画像を内部的にビットマップデータに変換してから描画する機能、いったん作成されたビットマップはメモリ上にキャッシュされ再利用される
  • ビットマップキャッシュ機能を利用するには、cashAsBitmap 属性に true を設定する
  • 複雑なベクター図形やテキストの描画に効果がある
  • 図形が変化するごとにビットマップを生成する、そのため頻繁に変更される図形は、ビットマップキャッシュするとかえって遅くなる
  • ビットマップを保持するため、メモリをたくさん必要とする
  • 図形の位置が変化してもキャッシュされたビットマップは再利用されるが、回転したり大きさを変えるとビットマップは再作成される
  • アルファの値が変わった場合もビットマップは再作成される
  • AIR と Packager for iPhone では、回転や大きさの変更でもキャッシュされたビットマップが使えるよう cashAsBitmapMatrix 属性が提供されている
  • cashAsBitmap = true のとき、opaqueBackground 属性を設定すると、さらに処理を高速化できる
  • cashAsBitmap は個々のオブジェクトに設定した方が、親オブジェクトに設定するよりも、使用するメモリ量を削減できるケースが多い (画面上で閉める領域の大きさに比例する)
  • フィルターは自動的に cashAsBitmap = true を設定する。これによりパフォーマンスに影響が出る

GPU

こちらの記事をご参照ください Flash Player 10.1 のハードウェアを利用した描画機能 (グラフィックス編)

すでにあちこちで書かれている話ですが、いちおうメモということで。

Mozilla や Google を中心とするグループが、ブラウザーのプラグインインターフェースとして広く採用されている NPAPI を拡張しようという議論を行っているそうです。

現在議論されている仕様がこちらの wiki にあります。

PlatformIndependentNPAPI

これによると、現在の NPAPI の持つ限界として以下のものが挙げられています。

  • ブラウザーとは別プロセスでのプラグイン実行など、新しい機能への対応が必要
  • 多くのプラグインが NPAPI 以外にも OS やブラウザー固有の API を利用せざるを得ない状況になっている (特に画面描画系)
  • プラグインと HTML のレイヤーを正確に合成する事が困難で、OS やブラウザごとに異なる表示がされる原因となっている

これらの問題に対応するため、次世代の NPAPI では以下の 4 点の変更が検討されているようです。

  1. ブラウザーと別のプロセスでプラグインを実行するための明確なセマンティクスの定義を追加
  2. プラグインの描画とブラウザーの画面合成プロセスを統合
  3. OS とブラウザーから独立した、2D および 基本的な 3D 描画に必要な API やイベントの定義を追加
  4. プラグインを読み込む事無しに利用可能なプラグインを判定する機能

新しい NPAPI のために Pepper と呼ばれる新しいプラットフォームが定義され、OS やブラウザー非依存の環境を実現しようとしているとのことです。

この件に関して、Flash Player チームのブログ (Improved Flash Player Support in Chrome) では、以下のようなコメントが寄せられています。

  • 新しい API は OS やブラウザー中立のため、プラットフォーム間での、動きやパフォーマンスに関する一貫性の無さは最小化されるだろう
  • 新しい API はプラグインをより柔軟にかつ緊密にブラウザーと統合できるように設計されている
  • 新しい API はパフォーマンスや安定性も改善するだろう、なぜならブラウザーはより多くの情報を直接共有できるようになるからだ
  • 新しい API はブラウザとプラグインのセキュリティモデルの統合を容易にすることで、より安全な閲覧環境実現を可能にする

その他にも、パスワード管理や SEO 対策などにも利用できそうですし、HTML レイヤーを Flash レイヤーの上に描画することができるようになるかもしれません。(ならないかもしれませんが)

デバイス向けのコンテンツを開発するときは、少なくとも当面の間はデスクトップ向けのコンテンツよりも軽くする努力が必要になりそうです。その際、例えば:

  • フレームレートを出来るだけ遅くする
  • タイマーの多重利用を避ける
  • コールバックの処理は軽く
  • 可能なものは MovieClip ではなく Graphics にする

などは分かりやすい最適化かもしれませんが、

  • ベクター描画よりもビットマップ

は、今までの感覚とは違うところかもしれません。

(将来の Flash Player では新しい最適化機能 & API が提供されて、ベクターでも大丈夫ってことになるかもしれませんけれど)

DisplayObject.cacheAsBitmap を使った最適化

cacheAsBitmap に true を設定すると実行時に DisplayObject をビットマップ化することが出来ます。複雑なベクターデータの描画を纏められるため、複雑な図形ほど描画パフォーマンスを向上させることが出来ます。

デバイス上ではこれによる高速化は特に効いてくるところなのですが、

  • もし DisplayObject がそもそも変化しないものであれば、ビットマップデータを使用したほうがより効果的
  • 頻繁に変化する DisplayObject に対して cacheAsBitmap = true をセットすると、ビットマップ化のオーバーヘッドにより逆効果になることも

という点もあります。ご参考まで。

ビットマップの使用とミップマッピング

改めて書くほどのことでもないですけれど、ビットマップを使うときは、予め小さく軽くしたものを使用して、出来るだけ実行時に縮小するといったことの無いようにします。

もし、実行時にビットマップを縮小する必要がある場合は、可能であればビットマップの大きさをミットマッピングが出来る大きさにすることが望ましいとされています。ミットマッピングは Flash Player 9 から追加されている機能で、ビットマップを描画する際の品質とパフォーマンスを向上するものです。品質に関してはこちらのデモが分かりやすいかもです。

Flash Player に搭載されているミップマッピングは box filtering と言われる一番単純なものです。PNG, JPEG 等の静的なビットマップにのみ適用され、実行時に cacheAsBitmap の指定により作られるビットマップには適用されません。詳しくは ActionScript のヘルプをご覧ください。(Adobe ActionScript 3.0 * ミップマッピングの利用

Mip マップを有効に活用するには、画像の幅と高さを 2 で何回も割れる数値にします。例えば、512 × 256 は非常にミップマッピング向きですが、510 × 256 はそうでもありません (一度しか割れないので)。

デバイスは機種により PPI が大きく異なります。例えば Experia X10 のインチあたりのピクセル数は iPhone 3GS のほぼ倍、そのため同じ画像でも Experia X10 では iPhone 3GS の半分程度の大きさで表示されることになります。

デバイス向けコンテンツでは、同じ画像を縮小率を変えながら使いまわすケースも多くなるかもしれません。心に留めておくと少しは役に立つことがあるかもです。

バルセロナで開催中の Mobile World Congress で Adobe からデバイス向け Flash Player 10.1 及び AIR に関する公式なアナウンスがありました。(Adobe Unveils AIR on Mobile Devices; Readies Flash Player 10.1 for Launch

Flash Player 10.1 と AIR 2.0 はデスクトップだけでなくデバイス上でも一貫した体験を提供するプラットフォームとして開発されています。Flash CS5 と Flash Player 10.1 / AIR が揃うと携帯やデバイス向けコンテンツ制作もずいぶん変わりそうですね。

デバイス向けは、まずは Android 用 からリリースされるようで、2010 年の後半までには Flash Player, AIR 共に正式版を公開予定との事です。とりあえずは、ベータ版を使った Android 上の AIR アプリデモがこちらのページからご覧になれます。(Flash Player 10.1 and AIR 2 mobile preview videos) 最初の 3 つくらいが Android です。iPhone アプリのビデオも載っています。

ちなみに iPhone 用アプリは Adobe Labs に公開されている Packager for iPhone を使ってiPhone 向けアプリとしてパッケージングします。このページ (Preview of AIR on Android) の下のほうにも新しい iPhone アプリがいくつかリストアップされています。

Packager for iPhone の方が Android 用 Flash Player より先に出るようなので、まずは iPhone アプリで新しい Flash Player の API を試してみるのがよさそうです。

Adobe のセキュリティチームより、

  • 今出荷中の Snow Loepard には旧バージョンの Flash Player が含まれている
  • そのため該当する環境ではセキュリティフィックスの適用された最新のバージョンである 10.0.32.18 へアップデートを推奨する

という記事がポストされました。(Flash Player update and Snow Leopard

最新の Flash Player のダウンロードはこちらです。(http://www.adobe.com/go/getflashplayer_jp

RTMP のスペックが公開されました。Adobe サイトからダウンロードできます。(Real-Time Messaging Protocol specification v1.0@Adobe developer connection) 公開された仕様は誰でも無償で (ライセンスに記述された範囲で) 利用可能です。

公開された仕様は、TCP 上で映像・音声・データを送信するためのプロトコルです。ハンドシェイクの手順やストリーム上を送信されるデータの作り方、コマンドメッセージのフォーマット等が記述されています。

セキュリティ関連の仕様 (RTMPE や SWF verification) は含まれていません。また、UDP ベースの RTMFP も公開された仕様には含まれていません。

今回の発表にあわせて、RTMP を使って FMS にデータをパブリッシュするアプリケーションを実装したい人のために FMS Connector for C++ SDK が提供されるようです。

RTMP のプロトコル仕様が公開される旨が発表されました。RTMP は Flash Player へのビデオストリーミングやリアルタイムデータプッシュを実現するのに使われているプロトコルです。Flash 関連では SWF, FLV/F4V, AMF に続く仕様公開になります。

RTMP の仕様は 2009 年の前半に公開される予定で、公開時には Adobe Develolper Connection (http://www.adobe.com/devnet/rtmp - まだありません) からダウンロードできるようになるようです。今のところオープンソースの実装の提供は予定されていないとのこと。

仕様公開後は、ほぼ自由に独自の実装を行うことができるようになりますが、コンテンツの不正配信やストリーミングのリッピング等を目的とした利用は制限されます。この辺りについては公開時のライセンス条項を詳しくご参照ください。

RTMP 上で暗号化通信を行う RTMPE や P2P を実現する RTMFP は今回公開される仕様には含まれません。

Adobe Labs に Text Layout Framework ベータ版が公開されました。(Text Layout Framework@Labs

Flash Player 10 から新しいテキストエンジン (Flash Text Engine - FTE) とそれを扱うための flash.text.engine という新しいパッケージが追加されていますが、Text Layout Framework はその API 上に構築されたフレームワークです。高度なテキストのレイアウト機能や、テキストの選択、編集機能などが実装されています。また、マークアップ形式のデータを扱うことができます。

上のリンクのページに Flash コンテンツとして 8 つのデモが提供されていますので、まずはそちらをご覧ください。"start tour" をクリックすると最初のデモが表示されます。

Text Layout Framework を使うには実行環境として Flash Player 10 または AIR 1.5 が必要です。開発環境は、Flash CS4, Flex Builder 3.0.2, Gumbo になります。

英語版の Flash CS4 を既にお使いの場合は、こちらのページ (Downloads/Text Layout Framework@Labs) から Text Layout Component for Flash CS4 をダウンロードして、中の MXP ファイルをインストールします。これで、コンポーネントパネル内の標準コンポーネントに textLayout コンポーネントが、その他のパネルに Text Layout パネルが追加されます。

Text Layout パネルでは、テキストのいろいろな属性をパネル内で選択することでプログラムを書かなくても設定できます。使い方は、英語で恐縮ですがとりあえずは Text Layout Component for Flash CS4 Professional Overview をご覧ください。

Text Layout パネルとほぼ同等のものがオンラインでも提供されています。(Text Layout Demo@Labs

Flex Builder 3.0.2 をお使いの場合は、ダウンロードページ (Downloads/Text Layout Framework@Labs) から Text Layout Framework をダウンロード後、textLayout_core.swc, textLayout_edit.swc, textLayout_conversion.swc の 3 つのファイルを sdks\3.2.0\frameworks\libs の下にコピーします。

Text Layout Framework の使い方サンプル

ダウンロードページ (Downloads/Text Layout Framework@Labs) にある Text Layout Component Examples for Flash CS4 には ActionScript のサンプルも含まれてますので、Flash CS4 がなくてもいろいろな使い方を見ることができます。

例えば、下は Text Layout Framework を使って "Hello World" を表示する例です。

Pixel Bender の新しいバージョンが公開されました。(Pixel Bender Toolkit@Labs) 今回は Preview Release 4 です。基本的にはバグフィックスが行われたくらいで、大きな変更はありません。

Adobe から検索エンジン用に最適化された Flash Player テクノロジーの Google と Yahoo! に対する提供について発表がありました。これにより検索エンジンはキーワードの抽出に Flash Player の機能を利用することができるため、動的に生成される画面や実行時に読み込まれるリソースもインデックス作成の対象にすることが可能になります。

まずは、先の 2 社と協力して検索エンジンの SWF コンテンツ対応改善に取り組むことになっていますが、将来的には一般の開発者まで Flash Player の検索対応機能を利用できるような方向で考えたいとのことだそうです。

先週 Adobe 本社から Open Screen Project が発表されました。(Open Screen Project

このプロジェクトの目的は、携帯や家電製品などの様々なデバイス上で、一貫した実行環境としての Flash Player (将来的には AIR も含め) の実装を推進することです。PC 環境では、Flash Player が OS やブラウザに非依存の実行環境として普及していますが、同様の環境をデバイス上にも実現することで、PC からデバイスまで統一された体験を提供することができるようにしたいという取り組みです。

そのために、Flash テクノロジーのライセンスに関して以下のような変更が行われます。(正確な内容は上記のサイトから確認してください)

  • Flash (SWF) および Flash Video (FLV/F4V) フォーマット仕様の利用目的に対する制限の廃止
  • Flash Player をデバイスにポーティングするための API の仕様公開
  • 携帯との通信に使用されている Flash Cast プロトコルと AMF プロトコルの公開
  • 次バージョンの Flash Player および AIR for devece のライセンス費の撤廃

最新の実行環境が一貫性を持って提供され続けること、ユーザが様々な環境から自由にコンテンツにアクセスできることを実現するために、デバイス開発会社からコンテンツプロバイダーまで様々な企業と協力していくことも発表されています。

少し前から Flash Player の削除には専用のアンインストーラを使用するようになりましたが、9.0.115.0 の公開に伴いアンインストーラも更新されていますのでお知らせしておきます。最新のアンインストーラは常に次のリンク http://www.adobe.com/go/tn_14157 から入手できるようになっているようですので覚えておくとよいかもです。

Flash Media Server 3 が発表されました。また、あわせて Flash Player 9 のアップデートも公開されました。新しい Flash Player のバージョンは 9.0.115.0 です。Flash オーサリング用のデバッグプレーヤも近々公開予定です。

今回の発表により H.264 ビデオと HE-AAC オーディオが正式にサポートされます。以前にもお知らせしたようにフル HD の再生も可能です。その他に、新しく暗号化したストリーミングを実現する RTMPE プロトコルの追加や、再生用の SWF を勝手に利用されないためのチェック機能などコンテンツ保護機能も拡張されています。

今回のバージョンから FMS は2 種類のサーバが提供されるようになります。1 つ目は従来の FMS のバージョンアップにあたる Flash Media Interactive Server 3 (FMIS3) です。2 つ目はビデオストリーミングに特化した新しいパッケージの Flash Media Streaming Server 3 (FMSS3) です。

FMSS は小規模な一方向のコンテンツ配信に使用するためのサーバという位置づけで、双方向のインタラクティブな通信やエッジサーバーを使用した構成等には FMIS が必要になります。その分価格も異なり、US 価格では FMIS が $4,500 からに対して FMSS は $995 (約 10 万円) という発表がされています。

Flash Media Server 3 (FMS3) の出荷は US では来年1月予定とのことです。例によって日本語版は無いため、日本での発売もほぼ同時期になるのではないかと思います。

SWF と FLV のバージョン 9 ファイルフォーマットがようやく公開されました。こちらの URL からライセンス契約を行うと入手できます。 (Adobe Player Licensing

このライセンスは SWF を生成するソフトウェアの開発を支援するためのもので、SWF を実行するソフトウェアの開発には利用できません。一応念のため。

不要になったオブジェクトへの参照が残っていると、そのオブジェクトの使用しているメモリを開放することができません。特に複数の参照を持つオブジェクトに対しては、参照の消し忘れによるメモリリークが発生しないよう注意が必要です。

イベントリスナを登録すると、イベントのターゲットになるオブジェクトとイベントリスナを持つオブジェクトの間で参照ができます。AS3 では下のような記述になります。

eventTarget.addEventLisener("type", eventHandler);
 

このコードを実行すると eventTarget と this の間に参照がつくられます。(eventHandler は this オブジェクトのメソッド)

ところが、これは明示的な参照の追加ではありません。そのため、参照の削除が必要な場合でも見落としてしまいそうですよね。

というわけで、今回はイベントリスナ追加時の参照の扱い方についてです。

参照の方向

参照には方向性があります。つまりオブジェクト間の参照は一方向のみ可能ということです。例えば以下のようなコードがあったとします。

Intel Mac 用 Flash Player が公開されました。バージョンは少し上がって 9.0.20.0 です。ダウンロードはこちらのURLからできます。(Flash Player ダウンロードセンター Mac OS X) 他のプラットフォームでは引き続き従来のバージョンをお使いください。

日本のサイトのリリースノートはまだアップデートされていないようですが、Audio MIDI のサンプルレートが 48Khz 以上のときにサウンドの入力がされない件と、ロゼッタモードではピクセルベースのグリッドフィッティングが効かない件、および日本語を含むダブルバイトモードでは Mozilla プラグインファインダーサービスが Flash Player 9.0.20.0 をインストールしない件が追加されています。(Flash player release notes@US site

ご参考までに、こちらも英語ですが Flash Player 9 で既知の主要な問題についてはこちらのテックノートにまとめられています。(Flash Player 9 Emerging Issues

2010年7月

Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
レンタルサーバー
Powered by Movable Type 4.261