Stageサイズが変わったときにMovieClipを動かすクラス [AS2]
- 2008-07-29
- flash
クラスを書くのに少しずつ慣れてきたところで、拙いクラスを開き直って公開してみようと思います。※注意!AS2です。
横幅、縦幅が100%のFlashで、Stageサイズを変えたときにムービークリップの位置をアニメーションで移動させる効果を使うことがよくあると思います。
例えば有名なHYBRIDWORKSさんのサイトがそうですね。
やり方はStage.onResizeリスナーイベントを使って、リサイズされたときにムービークリップを動かすよう指示するだけで特に難しくないのですが、動かしたいムービークリップがひとつだけならともかく、何個ものムービークリップをそれぞれ左上、右上、左下、右下のような位置に動かしたいとき、いちいち計算して指定するのもなかなか面倒です。
そこでそれを簡単に指示するためのクラスを作りました。
flaファイルとソースファイル一式はこちら。
(fusekitつかっています。)
使い方
ダウンロードして解凍したファイルの中から「stageresize_test.fla」を開いてください。srcフォルダにクラスパスを通してパブリッシュすれば動きます。
動かしたいムービークリップは、好きな場所に配置できます。
右上に置きたいものは右上をムービークリップの中心点に、左下は左下、右下は右下、その他は左上に設定してください。
タイムラインに書くスクリプトは「script」レイヤーの1フレーム目を参考に。
-
var stageObj:StageOnResize = new StageOnResize(_root, 800, 520);
StageOnResizeクラスのインスタンスを作ります。引数は1つ目が動かしたいムービークリップを置いているムービークリップ名(ここでは_root)、2つ目と3つ目はStageの横幅と縦幅です。
-
stageObj.addMovie({m:"right_mc", pos:"right"});
stageObj.addMovieで動かしたいムービークリップを登録してください。ムービークリップは何個でも登録できます。mはムービークリップの名前、posは置きたい場所。
・"right" 右付
・"bl" 左下
・"br" 右下
・"center" 横も縦も中央
・"cw" 横だけ中央
・"ch" 縦だけ中央
・"cr" 右付で縦の中央
・"cb" 下付で横の中央
左付のムービークリップはStageサイズが変わっても動かないので登録する必要はありません。
-
stageObj.setEase(0.7, "easeOutQuint");
移動スピードを設定します。省略するとデフォルトのスピードで動きます。
引数の1つ目は移動終了までの時間(秒)、ふたつめはイージングの種類です。FuseKitのPennerEasingです。イージングの違いは以下のページなどを参考にしてください。
にゃあプロジェクト - ウェブログ - FuseKitのイージング
一応、StageOnResize.asのソースは以下。
Read more »