■プロフィール

クリエイトウェーブスタッフ

Author:クリエイトウェーブスタッフ
開発における、諸々を書いていきたいなと思っています。

■最近の記事
■カテゴリー
■twitter

■QRコード

QR

■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブロとも申請フォーム
■twitter_follow

■ブログ内検索

■RSSフィード
■リンク
ブラウザの中央にswfを配置する
Pです。初投稿です。


as3でやってみました。

package
{
 import flash.display.*;
 import flash.events.Event;
 import flash.text.*;

 public class StageCenter extends Sprite
 {
  public function StageCenter ()
  {
   stage.scaleMode = StageScaleMode.NO_SCALE;
   stage.align = StageAlign.TOP_LEFT;
   stage.addEventListener (Event.RESIZE, resizeHandler);
   
   //起動時にもresizeHandlerを呼び出す
   resizeHandler();
  }
  
  private function resizeHandler (e:Event = null):void
  {
   dbgTxt.text = stage.stageWidth + "×" + stage.stageHeight;
   
   x = (stage.stageWidth - 400) / 2;
   y = (stage.stageHeight - 300) / 2;
  }
 }
}


ステージサイズ400×300で背景色は白。
さらにステージサイズと同じサイズの青い矩形を敷いてます。
テキストフィールド(dbgTxt)を配置してます。
1224_flash


プレビューすると、ありゃ??どうもresizeHandlerを通ってない模様。
1224_pic1a


ググること数分、原因が分かりました。
パブリッシュ設定>HTMLタブ>サイズをパーセントに指定する必要があるようです。
これで、swfが中央に表示されるようになりました。
1224_pic1b


ここで素朴な疑問が出てきました。
ブラウザサイズを、ステージサイズと同じになるように調整したら
htmlいっぱいにswfが表示されると思ったたのですが
何故か妙なスペースが出来てしまいました。
1224_pic1c

まあ、ここまでブラウザサイズを小さくする人は希だろうと思い
特に気にすることなくこれで良しとしました。


が、また問題が……
Mac+Safari環境でブラウザサイズの方がswfサイズより大きいにも関わらず
右側にスクロールバーが出現してしまうという現象が発生しました。
1224_pic2a


この現象を回避するには、パブリッシュされたhtmlをテキストエディタで開き
「body」タグを以下のように書き換えます。
<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

これで、スクロールバーが出現しなくなりました。
1224_pic2b


上で放置した「妙なスペース問題」もこれが原因だったようです。
「body」タグの設定をすることで余白が無くなり、妙なスペースが消えました。
1224_pic3


と、ここまで長々と書いてきましたが、実はもっと簡単な方法があったのでメモ。

「パブリッシュ設定>HTMLタブ」で以下のように設定します。
サイズ:パーセント
伸縮:拡大・縮小なし


これでスクリプトを一切書くことなくswfが中央に表示されます。
ユーザーがブラウザサイズを変更してもちゃんと着いていきます。
サイズ変更時のイベントを受け取らなくてもよい時はこちらの方がはるかに楽です。
※上に書いた「body」タグの変更は、お好みで。

カテゴリー:Flash | TM(0) | CM(0)
次のページ

FC2Ad