AS3.0色々と覚書き

先週会社を辞職し、人生2度目のプーフリーターとなりました。現在個人で引き受けているお仕事があり、社会復帰はまだ先になりそうです。
さて、今回の案件ではちょっとだけPV3Dを使いたいこともあり、背伸びしてAS3.0で開発することにしました。何をやるにしてもいちいちリファレンスを調べるところから始まり、どうも時間がかかってしまいますが、「一度慣れてしまうともうAS2.0には戻れない」というFLASHerの方の意見も聞きますので、頑張ってみようと思っています。

そんななかで、最近手を動かしてみて初めてその重要さに気づいたことを何点か。(AS3.0とは直接関係ない項目もあります)

【カスタムイベントの実装】
EventDispatcherクラスのdispatchEvent()を使いこなせるかがポイント。Moock先生の「Essential ActionScript 3.0」のCustom Events(p 221〜)に詳しい説明が掲載されています。

【イベントフローの理解】
AS3.0では、2種類のイベントフロー(イベントが発生する順序)が存在します。これらは、EventDispatcher.addEventListener()の第3引数useCaptureの設定によってどちらのイベントフローを使用するかが決定されます。

  1. キャプチャー段階でのみイベントをリスニング(usaCapture = trueの場合。stage→親オブジェクト→ターゲットオブジェクトへとイベントが発生)
  2. ターゲット段階およびバブリング段階でイベントをリスニング(useCapture = false(デフォルト)の場合。ターゲットオブジェクト→親オブジェクト→stageへとイベントが発生)

イベントフローについてはAdobeの上条さんがblogで解説されていますが、このエントリーにあるように「ルートからターゲットまで途中のノードを順番に経由してイベントが伝わり、そしてまたルートへと途中のノードを経由しながらイベントが戻る」、つまりキャプチャーフェーズ→ターゲットフェーズ→バブリングフェーズの3つ全てでイベントの伝播を行うのは、useCaptureをtrueにしたaddEventListenerと、同パラメータをfalseにした同メソッドを2つ設定した場合のみです。このあたりのことはaddEventListener()のcaptureの説明に記載されています。

イベントの伝播を途中で中断するEvent.stopPropagation()およびEvent.stopImmediatePropagation()なんていうメソッドもついでに覚えておくといいと思います。自動的にイベントが発生していくというメカニズムを考慮すると、これらを使わないと重なり合うオブジェクトが存在するインターフェースで、予期せぬ誤動作が発生してしまう可能性が非常に高いです。

と、ごちゃごちゃ書きましたが、以上すべてのことはvoid element様の解説を読むのが一番良いと思いますw。

【ID3タグ】
初めてmp3のID3タグについて知りました。これはアーティスト名やアルバム名、さらにはプレイタイム*1など、楽曲に関する様々なデータをmp3データに埋め込む事ができるという優れもので、Flash 9ではID 3のv2.3およびv2.4をサポートしているとのことです。
ID3の編集には色々なエディタが存在するようですが、iTunesを使うこともできます。iTunesのライブラリで任意の楽曲(mp3のみ。将来的にはFlash Playerがaacを正式にサポートするので、その際はaacの楽曲も同様にできるようになるのでしょうね)を右クリックし、「ID3タグを変換...」を選択。 v2.3かv2.4を選択すれば、flashがサポートするID3タグが埋め込まれたmp3を作成することができます。

Tweener
FuseKitではx座標などはパラメータの数値を文字列化することによって、オブジェクトを相対的に動かせるという機能がありとても便利だったのですが、Tweenerにはないのでしょうか?改めてFuseKitの便利さを実感。

2007/11/09追記

Tweener.addTween(targetObj, {x:targetObj.x + 100, time:1.5, transition:"easeOutCubic"});

みたいに書けば同じかー。普通すぐに気づくよねorz。

*1:プレイタイムはSoundオブジェクトのlengthプロパティで取得するのが正解でした。