特に何が変わったというわけではありませんが、Flash Player 8.5 と呼ばれていた次期 Player の名前が Flash Player 9 に変わりました。もうすぐ公開予定のベータ 3 からこの名前になるとのことです。
Adobe Labs の wiki にある FAQ によると、非常に大きな変更のあるバージョンアップであることをはっきりと伝えたいというのが主な理由のようです(Labs の FAQ はこちら)。
特に何が変わったというわけではありませんが、Flash Player 8.5 と呼ばれていた次期 Player の名前が Flash Player 9 に変わりました。もうすぐ公開予定のベータ 3 からこの名前になるとのことです。
Adobe Labs の wiki にある FAQ によると、非常に大きな変更のあるバージョンアップであることをはっきりと伝えたいというのが主な理由のようです(Labs の FAQ はこちら)。
Dictionay クラス (livedocs@lab) は beta2 から追加されたクラスで、オブジェクトをキーとして値を管理することができます。Object を使っても同じように連想配列を実現できますが、Dictionary ではいわゆる"弱い参照"が使えます。
また、Object では文字列がキーとして扱われるため toString() の値が同じオブジェクトは全て同じキーとして扱われますが、Dictionary では別々のオブジェクトであれば toString() の値に関わらず異なるキーとして扱われます。
StringBuilder クラス (livedocs@lab) は String と同じように文字列を扱うクラスですが、特に文字列に追加や挿入などの操作を何回も行うような場合に使います。String と違い、操作の度に新しいオブジェクトを生成したりしないため、メモリをより有効に使用することができます。特に、細かな追加を何回も行う場合には String と比べて高速です。
StringBuilder のインスタンスを生成するにはコンストラクタを使用します。String のように直接文字列で初期化することはできません。
IE6 の仕様変更に対応した新しいパブリッシュテンプレートをサポートする Flash Professional 8 および Flash Basic 8 用 Hot Fix が公開されました。こちらからダウンロードできます。( ZIP ファイル 17K)
インストール方法および使用方法は ZIP ファイル内の Readme2.html に日本語で記述されています。(日本語以外のバージョンは US の Flash サポートサイトから可能です - Flash Support Center/Downloads)
また、アクティブコンテンツ関連の情報も日本のサイトで公開されました。(アクティブコンテンツセンター) こちらもあわせてご覧ください。
今日は、Flash OOP の会がありました(というかまだやってます)。Flash を日々使用している人に興味があるようなのは、やはり AS3 によって今の制作ワークフローがどう変わるかということのようですので、AS1/2 と AS3 の関係について、ちょっと書いておきたいと思います。
現在 AS3 のアプリケーションを作れるのは Flex Builder 2 のみです。また、Flash 8 では AS3 のクラスを使用することができません。従って、現時点で可能な組み合わせは、Flash 8 で作成した AS1/2 SWF を AS3 アプリケーションに組み込む場合のみということになります。
Proxy クラス (livedocs@lab) は既存のオブジェクトの振る舞いを変えたいときに使います。例えば、Proxy のサブクラスである ObjectProxy クラス (livedocs@lab) は属性が変更されたとき、イベントでそれを知らせることができるようになっています。(注:ObjectProxy は Flex 2 フレームワークのクラスです)
Proxy クラスにはコンストラクタがありません。従って、Proxy クラスを使用する際は、サブクラスを定義しメソッドをオーバーライドするのが基本です。オーバーライドしていないメソッドが呼ばれた場合は例外が投げられます。
Timer クラス (livedocs@lab) は一定の間隔毎に処理を行いたい場合に使用します。Timer のインスタンスは、予め設定された時間が経つとイベントをディスパッチします。
Timer クラスは AS2 の setInterval() / getInterval() を置き換えるものです。AS3 でも setInterval() / getInterval() は共に flash.util パッケージ下にあり使用可能ですが、これは既存のコードとの互換性を持たせるためと考えるのがよさそうです。
Timer を使用するには、まずインスタンスを作成します。コンストラクタの引数にはイベントまでの待ち時間をミリ秒単位で指定します。
IE6 のアクティブコンテンツ関連の動作を変更するパッチが公開されましたが(関連情報)、それに伴い、対応方法に関連する記事がUS のアクティブコンテンツデベロッパーセンターにて公開されました。
IE の変更に対応するためのサンプルファイルはこちらからダウンロードできます。( ZIP ファイル 4K) これには以下のファイルが含まれています。
swf を表示するにはは AC_RunActiveContent.js ファイル内に定義されている AC_FL_RunContent 関数を Object タグの代わりに使用します。関数の引数にはパラメータの名前と属性を交互に記述します。
例として以下のような HTML ファイルがあるとします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Before</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="369" height="113">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<embed src="flash.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="369" height="113"/>
</object>
</body>
</html>
これを書き直すと以下のようになります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>After</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript" src="after/AC_RunActiveContent.js"></script>
</head>
<body>
<script type="text/javascript">
AC_FL_RunContent(
'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0',
'width','369',
'height','113',
'src','flash',
'quality','high',
'pluginspage','http://www.macromedia.com/go/getflashplayer',
'movie','flash' );
</script>
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="369"
height="113">
<param name="movie" value="flash.swf">
<param name="quality" value="high">
<embed src="flash.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="369" height="113"/>
</object>
</noscript>
</body>
</html>