イベントリスナーにお困りの皆さんに朗報です。BeInteractive! は本日、革新的な疑似マルチスレッドライブラリである、「ActionScript Thread Library 1.0 (そうめん)」をリリースします。
先進的な Flash コンテンツを作るためには、XML や画像の読み込み、ムービークリップやスプライトの処理、ユーザーからの入力の処理、3D や物理エンジンといった様々なフレームワークとの連携といった、数多くの制御を行う必要があります。しかし、ActionScript 3.0 は、特にイベント周りが複雑で、このような制御を行うコードは、冗長で分かりづらいものとなりやすい傾向がありました。
このような問題は、コードが、私たちにとって馴染み易い、同期的でシーケンシャルに書けないことに起因します。そこで、ActionScript Thread Library 1.0 (そうめん) は、古くからゲームプログラミングで用いられている設計手法である「タスクシステム」と、マルチスレッドをサポートする言語として代表的な Java 言語の「スレッドモデル」を組み合わせることで、擬似的なマルチスレッドを実現し、コードを、わかりやすい同期的でシーケンシャルな記法で書くための一連のクラスライブラリを提供します。
本バージョンは、昨年リリースしたアルファバージョンより大幅に改善されており、特に Flash のイベントとの連携や、割り込み処理と例外処理が強化されています。メソッド名や記法も新たに見直し、より自然で直感的にコーディング可能となりました。また、ドキュメント及びサンプルの充実にも力を入れ、はじめての方でもそれなりに使いやすくなっています。詳しくはプロジェクトページをご覧下さい。
と、アップルっぽく長々と書いてみましたが、去年に試作品を開発し、今年に入ってから新バージョンを作ることを決め、ここ最近つきっきりで開発してた Thread Library が、遂にリリースです。本当は 0:00 に更新しようと思ってたんですが、なんとドキュメントがフライングではてブのホッテントリ入りしてしまったので、急遽この時間にリリースです。自分で言うのも何ですが、かなりいい出来になっています。コントローラ層でお悩みの方ぜひどうぞ。僕も既に仕事で数案件に実践投入していて、Thread Library 無しでは生きていけない体になっています。実際にはもう結構前にライブラリ自体は出来上がっていて、ドキュメント作成に結構時間がかかりました。そのおかげというわけではないですが、大分安定していて、自信を持って 1.0 と言えます。
実際のところ Thread Library ってなんなのかよく分からない人がほとんどだと思うので、きちんとしたコンテンツ仕立てのサンプルもひとつ作ってみました。「FlickrSphere」という、Flickr の写真を、色に基づいて球体上にマッピングする Flash です。この Flash で行われている、検索、画像の読み込みと表示、アニメーションといったほぼ全ての制御が Thread Library を使用して書かれています。ソースコードはこちら。なんとか Thread って名前がつくクラスがいくつかあるのが分かると思います。
Progression の人を見習って、ドキュメントもバッチリ書いたのでぜひチェックして下さい。サンプルも FlickrSphere の他にいくつかあります。プロジェクトページでは、制作事例も募集しているので、何か作られた際には是非。あと、この間開発した AS3Unit for async を使って、ちゃんとテストも書いたので、その辺興味ある人はソースも見て下さいまし。あと結構力作のスレッド動作チャートとか。
久々の大仕事で疲れたにゃー。これで次は心置きなく swfassist とか弄れるかな。
質問やらなんやらありましたらフォーラムやコメントやトラックバックでどぞ。
サイト内関連記事
この記事へのトラックバック
TrackBack URL:
http://www.be-interactive.org/trackback.php?id=385

私が Java でスレッドを使う主な目的は Queue を使うことなのですが、
Guarded Suspension パターンを作ることはできるのでしょうか。
下記の本に出てくるパターンです。
- デザインパターン入門【マルチスレッド編】 結城 浩 著 -
完全に同じという訳ではありませんが、似たようなことが出来ます。
「FlickrSphere」でも、画像を表示するスレッドと、画像をロードするスレッドは、キューを介してやり取りをしています。
ロードした画像を蓄えておくキュー (PhotoImageQueue.as):
http://tinyurl.com/5m9ejn
画像ロードしてキューに offer するスレッド (LoadFlickrPhotoImagesThread.as):
http://tinyurl.com/5u4d53
ロードされた画像をキューから poll して表示するスレッド (DisplayFlickrPhotoThread.as):
http://tinyurl.com/6oakn9
DisplayFlickrPhotoThread の displayPhoto メソッドの先頭で、キューの checkPoll メソッドを呼び出して表示可能な画像がキューにあるかどうかをチェックしており、ここが Guarded Suspension チックになっています。
画像のロードにも利用できることが分かり勉強になります。
利用者からのリクエストを処理する部分に使わせてもらおうと思っていたのですが、安心して使うことができそうです。