サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

Stage.onResizeリスナーイベント

ID: FN0307003 Product: Flash

Platform: All
Version: MX and above

シンタックス
myListener.onResize:Function

引数
なし。

戻り値
なし。

説明
リスナーイベント; Flash Playerの領域サイズが変更されたことを、イベントリスナーのオブジェクトに知らせます。Flash Playerの領域サイズが変わったときに実行したい処理を、イベントリスナーのコールバック関数として定義します。このリスナーイベントを使うと、たとえばブラウザウィンドウのサイズをユーザーが変更したときに、ステージ上のオブジェクトをレイアウトし直すことができます。

Stage.onResizeイベントを有効にするには、[ファイル]メニューから[パブリッシュ設定]ダイアログボックスを開き、[HTML]タブの[サイズ]を[パーセント]に設定する必要があります(図001)。また、[伸縮]は[拡大/縮小なし]にします。ステージ上のオブジェクトをピクセル単位で位置指定する場合には、[Flashの位置]を[左][上]に設定しておきます。

図001■[パブリッシュ設定]ダイアログボックスの[HTML]タブ

[サイズ]を[パーセント]に設定

前述の[伸縮]と[Flashの位置]については、StageクラスのStage.scaleModeおよびStage.alignプロパティで設定することも可能です。なお、SWFムービーが再生を開始したときには、Stage.onResizeイベントは発生しません。最初にイベントハンドラを呼出したいときは、スクリプトに呼出しのステートメントを記述する必要があります。


以下のサンプルスクリプトは、ブラウザウィンドウ内でMovieClipをつねにFlash Playerの表示領域の中央に配置します。SWFムービーの再生開始時に配置を整えるため、最後のステートメントでイベントリスナー(MovieClip)のコールバック関数を直接呼出しています。

// MovieClip: ステージの中央に配置したいMovieClip
// 第1フレームアクション
Stage.align = "TL"; // Flashムービーを左上に配置
Stage.scaleMode = "noScale"; // 伸縮を拡大/縮小なしに
// MovieClipインスタンスをリスナーに登録
Stage.addListener(this);
this.onResize = function() {
   this._x = Stage.width/2;
   this._y = Stage.height/2;
};
// 最初に配置を揃える
this.onResize(); // メソッドを呼出す


[注記] ブラウザで再生しているSWFムービーにおいて、ブラウザウィンドウを垂直方向にのみサイズ変更したとき、Stage.onResizeイベントを発生させないという問題が報告されています。ステージサイズの変更自体が認識されないようで、Stage.widthStage.heightの値の変化を監視しても対処できません。

HTMLドキュメントのhead要素内に、以下のstyle要素を定義することで、この問題は回避できるようです。

<style type="text/css" media="screen">
html, body {
   width: 100%;
   height: 100%;
}
</style>

Player
Flash Player 6以降。

参考
Flash MX 2004 ActionScript Dictionary: Stage.onResize

_____

作成者: 野中文雄
更新日: 2004年8月29日 Flash MX 2004のドキュメントを確認するとともにオリジナルの原稿に変更
作成日: 2003年7月13日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.