「ActionScript3.0を駆使したプロフェッショナルテクニック」を謳っていながら肝心のサンプルにActionScript2.0が混在しているという困った学習本の修正版を作る企画第6弾。
ざっと見たところCaseStudy10以降にはAS2のサンプルはないようですので、これが事実上最終回となります。いやぁ長かった。
基本的な手順
以下、「ソフトバンク クリエイティブの本:Flashデザインラボ -プロに学ぶ、一生枯れない永久不滅テクニック」のページで配布されているサンプルをベースに修正します。
- 新規 ActionScript 3.0 Flashファイルを作成する
- もとのサンプルファイルを開き、ライブラリから必要なものを新しいFlashファイルへコピーする
- 新しいファイルのステージ上にオブジェクトを配置して、もとのサンプルファイルと同様の状態にする
- 作成したFlashファイルと同じディレクトリに、このページで配布しているクラスファイルを配置する
- ライブラリパネル上で、ムービークリップにクラスファイルへのリンケージを設定する
- パブリッシュ設定で、ステージのインスタンスを自動宣言しないようにする
以下のリンクから、今回作成したクラスファイル群をダウンロードできます。
Zip形式で圧縮されていますので、Flashファイルと同じフォルダ(htmlフォルダ)に解凍してください。
補足説明
今回はライブラリのMovieClipオブジェクトに紐づけるクラスファイルが多くなりました。
リンケージの設定をする際の、ライブラリパネル上のオブジェクト名と設定するクラス名との対応をまとめました。
| ライブラリパネル上のオブジェクト名 | クラス名 |
|---|---|
| btnBack | BackButton |
| Fireworksオブジェクト/コピー/コピー2/sound_btn | SoundButton |
| Fireworksオブジェクト/コピー/コピー2/stop_btn | PauseButton |
| Fireworksオブジェクト/コピー/コピー3/コピー3 | PlayButton |
| movieInfo | MovieInfo |
| playStop_mc | PlayStopButton |
| soundh_play_mc | SoundStartButton |
| soundh_stop_mc | SoundStopButton |
| videoSlider | VideoSlider |
今回は諸事情でリンケージを設定する手間が多くなってしまいましたが、オリジナルのFlaファイルの構造にできるだけ手を加えないというポリシーは変わっていません。
こうして見ると、オブジェクトの命名規則を統一することや、ライブラリパネル内を階層分けして整理しておくことの重要性を感じますね。
今回はFLVファイルの再生がテーマです。外部FLVファイルの再生には、NetConnectionクラスとNetStreamクラスを用います。
このあたりの書き方は書籍「ActionScript 3.0 逆引きクイックリファレンス Adobe Flash CS3対応」のQ*239に書かれていたやり方をほぼ踏襲しています。
それ以外の箇所で意外とハマったのが、On/Offの切り替えボタンへのリスナー設定です。
Off表示のボタンが2フレーム目で初めて登場するため、入れ子の親にあたるクラスのコンストラクタ内でこのボタンへaddEventListenerしても無視されてしまいます。今回はこのボタン自体のクラスを定義することで問題を解決しましたが、Flaファイルを自由にいじって構わない状況なら、2フレーム目以降に登場するインスタンスを1フレーム目のステージ外にあらかじめ配置するのが一番手っ取り早いです。
あとは、再生時間を表すバーとスライダーの制御が少々やっかいでした。
クリックイベントを設定したオブジェクトの上にオブジェクトが重なっている場合、上に重なっているオブジェクトのほうがクリックイベントを受け取ってしまって、本来起きてほしい反応が起きません。この場合は上に重なっているオブジェクトのmouseEnabledプロパティをFalseにします。
それからマウスのドラッグに関して。MOUSE_DOWNイベントはドラッグされる対象のオブジェクトに対してaddEventListenerすればよいのですが、そのオブジェクトが動く範囲外でマウスのボタンが離されてもイベントを拾えるよう、MOUSE_UPイベントはstageに対してaddEventListenerしています。
その他にもサウンドのOn/Off切り替えなども地味に行っています。このあたりは書籍「ActionScript 3.0 逆引きクイックリファレンス Adobe Flash CS3対応」のQ*231を参考にしました。
参考
- 配置済み MovieClip(TextField)にクラスからアクセスする。 – yoshidam.as
- ドラッグ操作についてのAS3.0 – lifepad2
- AS3 で扱うサウンド – Flash OOP Japan
- parentプロパティ – DisplayObject – ActionScript 3.0 コンポーネントリファレンスガイド
- NetStatusEvent – ActionScript 3.0 コンポーネントリファレンスガイド
毎度のことですが、AS3の不思議なコンパイルエラーメッセージに頭を悩まされます。これが出たらどこを疑えばよいのか、知ってしまえばどうということはないのですが、いちいちネットで調べるのが面倒なので、ついに「ActionScript 3.0 逆引きクイックリファレンス Adobe Flash CS3対応」を購入しました。これで少しスピードアップできるかも!?