久しぶりにFLASHの仕事をしていたのですが、全画面に表示されるFLASHの中で、オブジェクトがたえず中央に表示されるようにしたかったんですね。
ようは、画面サイズが変更されても、上下左右の中央に絶えず配置されるようにしたかったんです。
結構前にそのスクリプトを組んだ事があったんですが、思い出せない・・・。調べてもイマイチ欲しいやつが出てこない。なんだかんだで結構時間を取られてしまいましたので、自分用にメモっておきます。
FLASHを全画面表示させる方法
これは、書き出す時にFLASH側で設定してあげると簡単でした。
ファイル > パブリッシュ設定 > HTML で、幅と高さを100%にしてあげて、バブリッシュすると、FLASHが全画面表示になります。
ただ、このままだと、FLASHの中身も拡大されてしまいます。背景色とかは拡大されても問題ありませんが、MCはそれだと困りますよね。
なので、
Stage.scaleMode = "noScale";
Stage.align = "TL";
これを中央配置したいMCに書きます。
すると、この部分だけは拡大されなくなります。
画面中央に寄せるスクリプト
onClipEvent(enterFrame){
this._x = Stage.width/2;
this._y = Stage.height/2;
}
画面の縦横幅を取得してそれを2で割って中央を出して、MCのXとY座標に入れてあげれば、画面中央に配置されます。
とりあえずコレが基本。
でも、これだけだとリサイズ時に中央には来るけど、動きがカクカク してしまいます。もっと ぐいーーん ってな感じで中央に寄せたいですよね。
イージングしながら画面中央に寄せる
//画面の設定
onClipEvent(load){
Stage.scaleMode = "noScale";
Stage.align = "TL";
//中央へ寄るスピードを調整
var speed = 4;
}
//画面のサイズが変更になった時に中央に自動的に寄るように設定
onClipEvent(enterFrame){
var sW = Stage.width/2;
var sH = Stage.height/2;
this._x += (sW-this._x)/speed;
this._y += (sH-this._y)/speed;
}
これで、イージングしながらMCが画面中央に寄っていきます。
中央の座標から自分の位置を引く所がミソですね。
このスクリプトを考えている時、なんとなくですが「緑の赤ん坊」を思い出しました。 目的地へ1/2ずつ近づいて行くんですよね。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。