5/31日のF-siteセミナー用に作成したレジュメです。セミナー中には言えなかった情報や、見せられなかったflaファイルなどもあります。僕はこれを見ながらしゃべっていただけですので、うまくすればあなたにもセミナーができてしまうかもしれません(笑)
当日のことを思い出しながら、活用していただければ幸いです。
|
2. ではこのサイトのどこを解説するのかといいますと、「ウィンドウをリサイズしたときのレイアウト自動調整スクリプト」です。 口頭で説明しても訳がわからないと思いますので、実際にどういったインターフェースなのかを見ていきましょう。 【ブラウザをリサイズしながら】 ウィンドウをリサイズすると…すごいことが起こります。ステージのサイズを取得できるというFLASH MXの新機能をうまく使っていると思います。こういう形のFLASHですと、PowerBookやバイオWなどのワイド液晶を搭載するマシンでもきれいにレイアウトすることが出来ますよね。非常に実用性のあるインターフェースです。 FLASH5までだとブラウザにswfファイルのサイズを合わせるにはfscommandのallowscaleをtrueにしたり、パブリッシュ設定をいじるしか方法はありませんでした。今回のスクリプトは新たなレイアウトのスタンダードになっていくのではないかと、個人的にはかなり期待していたりします。 |
3 では解説していきたいと思います。どうやっているのか。方法はステージ配置された普通のムービークリップをステージのサイズに合わせて移動しています。処理の流れを言いますと「ステージがリサイズされるたびにステージサイズを取得し、それに合わせてムービークリップを移動させる」という方法をとなっています。 大体おおざっぱに言うとこういう流れになっています。 |
4 では具体的な解説に入っていきます。 ユーザーによってステージのリサイズが行われたら、処理を実行するというスクリプトを解説していきます。 やっとここからセミナーらしくなってくるので、よく聞いておいてください。ステージのリサイズを通知するには、「リスナー」というものをを使います。リスナーは、MXからあらたに取り入れられた考え方で、イベントを受け取るためのobjectオブジェクトです。F-siteのセミナーを毎回しっかり受けていられる方は覚えているかと思いますが、昨年の9月7日に野中さんがこのイベントリスナーについて解説されていましたね。 今回はリスナーについて理解するという趣旨のセミナーではないので、わからない方は聞き流してかまわないと思います。ただ、書き方はちゃんとメモしておきましょう。 じゃあスクリプトを記述します。ムービーの1フレーム目に 【記述 myListener=new Object()】 myListenerというobjectオブジェクトを明示的に生成します。 いろんなオブジェクトでこの書き方はよく使いますね。 【記述 myListener.onResize=function(){】 ここでステージがリサイズされたときのアクションを決定します。このfunctionの中に実行したい処理を書きますが、順を追って説明していきますので、とりあえずここはまだ埋めません。 【記述 Stage.addListener(myListener)】 ステージオブジェクトにaddListener でリスナーを追加します。 Stage.removeListener(myListener)なんていうのを使えばリスナーを削除することも出来ます。あたりまえですが削除するとステージのリサイズは通知されなくなります。 まとめますと、スクリプトは次のようになったかと思います。 myListener = new Object(); myListener.onResize = function() { //ここは空にしておきます }; Stage.addListener(myListener); では実際にステージのリサイズを通知してみましょう。 先ほどからにしておいたfunctionの中にtrace("OK")と書きます。 これでムービープレビューをすれば、ステージがリサイズされるたびに出力ウィンドウにOKが表示されるはずですよね。今更ですがtraceは変数の中身を出力ウィンドウに表示するスクリプトです。 まとめると、スクリプトは次のようになります。 myListener = new Object(); myListener.onResize = function() { trace("OK") }; Stage.addListener(myListener); 【ムービープレビューをし、ステージをリサイズ】 OKが出力ウィンドウにでてきましたね。ステージのリサイズされたらfunctionの中が実行されるようになってますね。これで第一段階が終了です。 |
5 |
6 次へいきます。「今取得したステージサイズをもとに、ムービークリップの位置を変更」を解説していきます。 これもスクリプトの中級者であれば解説するまでもないと思いますが、初心者の方も多数いらっしゃいますので解説していきます。中級者の方はスクリプトを予想しながら聞いてみてください。ステージにbarXという名前を付けたムービークリップと、barYという名前を付けたムービークリップを配置しておき、先ほどのリスナーfunctionの部分にbarX、barYの_x、_yを変更するスクリプトを記述します。 【1フレーム目を確認 先ほど書いたスクリプトがすでに書かれている】 【barX._x=stageW】 ムービークリップ「barX」のx座標にステージの幅(変数stageW)を代入しています。 【barY._y=stageH】 ムービークリップ「barY」のx座標にステージの高さ(変数stageY)を代入しています。 まとめると、スクリプトは次のようになります。 myListener = new Object(); myListener.onResize = function() { barX._x = Stage.width barY._y = Stage.height }; Stage.addListener(myListener); ちなみにこのレイアウト用のムービークリップは中心点をステージの縦、横に合わせてください。 【レイアウト用のムービークリップの解説】 【パブリッシュプレビュー】 ちょっと汚いですね。大きな解像度のディスプレイのためにレイアウト用のムービークリップは大きめに作っておきます。それと移動する位置がステージサイズに合っていません。 これはswfファイルの実際のステージサイズより大きなサイズでswfファイルを表示したときの表示位置が中央になっているためです。言葉で言うとわかりにくいので、実際に見ていきましょう。 【起動 data.files/flash/align.fla】 alignは、パラメータは位置によってこのように決まっています。 Stageサイズを取得して、使いますので基本となる位置は左上にある方が理想ですよね。FLASHでは座標関係は原点が左上にありますからalignのパラメータを"TL"とします。 【起動 data.files/flash/chuou.fla】 ステージの背景を濃い灰色にして、ステージサイズいっぱいに薄い灰色を塗ったFLASHです。これを使ってFLASHの表示位置について見ていきたいと思います。 【Stage.alignを"TL"に設定する前とあとで見比べてみる】 【data.files/flash/align.flaを閉じる】 【記述 Stage.align="TL"】 まとめると、スクリプトは次のようになります。 Stage.align = "TL" myListener = new Object(); myListener.onResize = function() { barX._x = Stage.width barY._y = Stage.height }; Stage.addListener(myListener); |
7 |
8 ステージサイズをムービークリップbarXの中のposX、barYの中のposYに代入するスクリプトを記述します。 これで完成しました。実際の動きを見てみましょう。 まとめると、スクリプトは次のようになります。 Stage.align = "TL" myListener = new Object(); myListener.onResize = function() { barX.posX = Stage.width barY.posY = Stage.height }; Stage.addListener(myListener); (barX、barYのクリップアクションに) onClipEvent(enterFrame){ _x+=(posX-_x)/5 } 【パブリッシュプレビュー&何度かリサイズ】 これで完成です。 今回解説したStageの幅、高さの求め方のスクリプト、それと減速しながら目標に向かうスクリプトなんかはホントに重宝しますので、みなさんぜひFLASHのインターフェース制作に役立てていただければいいかな、と思います。 それと最後に実例紹介と言うことで、今回使ったStageオブジェクトを駆使したサイトをご紹介します。 最近nttdataがリニューアルされまして、そこでStageオブジェクトを使ったテクニックがふんだんにつかわれています。 リサイズするとこのムービークリップがサイズに合わせて移動するんです。すっごく面白いので、ぜひ見てみてください。 NTTデータ http://www.nttdata.co.jp/ あと減速しながら目標に向かうスクリプトなんていうのは最初に紹介したF-siteのカバーでも使われてるテクニックです。この場合はグラデーションのムービークリップにさっきの式を書いてます。 F-site カバーアート(2代目) http://www.f-site.org/ |
補足(セミナーではしゃべっていない内容です) this.nSpeed = 0.2; |