全画面表示にしたFLASHの中でMCを中央に配置する

Go Yoshiwara

Go Yoshiwara

久しぶりに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サイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

1982年生まれ。信濃中学校卒業。フリーターとして23歳まで様々な職業に従事し数々のスキルを身につける。ウェブデザイナーとして活躍したのち、25歳で起業し代表取締役に就任(会長を経て2022年に退任)。自然あふれる場所で生まれ、アウトドアスポーツをして育ったが故にITの道を志したが、近年、再びアウトドアな環境、遊び、生き方を模索して長野県に移住。わくわくするものをつくり続けていたい。

このメンバーの記事をもっと読む