Macromedia Flash非公式テクニカルノート
Stage.resizeイベント
ID: FN1006004 |
Platform: All |
Version: CS3/ActionScript 3.0 |
Runtime: Flash Player 9/AIR 1.0 |
Stageクラス |
パッケージ
|
flash.display
|
継承
|
Stage → DisplayObjectContainer → InteractiveObject → DisplayObject → EventDispatcher → Object
|
resizeイベント
|
概要
|
ステージの大きさが変わると配信されるイベント。
|
イベント定数
|
Event.RESIZE |
説明
Stage.resizeイベントは、ステージの大きさが変わると配信されます。EventDispatcher.addEventListener()メソッドには、第1引数のイベント定数としてEvent.RESIZEを指定します。ステージつまりStageオブジェクトに対しては、つぎの3つの設定が必要です。
- サイズ ウィンドウに対してステージが占める割合を[パーセント]で定める。
- 伸縮 ステージのサイズが変わっても表示は[拡大・縮小なし]つまり伸縮しない。
- Flashの位置 ステージの原点(左上角)をウィンドウの[左][上]に定める[*1]。
これらの設定は、[パブリッシュ設定]の[HTML]タブで行えます(図001)。また、2と3はスクリプトでも設定できます。
- Stage.scaleModeプロパティを定数StageScaleMode.NO_SCALEに設定する。
- Stage.alignプロパティを定数StageAlign.TOP_LEFTに設定する。
図001■[パブリッシュ設定]ダイアログボックスの[HTML]タブ
[*1] 「Flashの位置」の設定に関わらず、Stage.resizeイベントは発生します。しかし、ステージの原点をウィンドウの左上角に合わせないと、配置を決めることが難しくなります。
|
例
つぎのフレームアクション(スクリプト001)は、ウィンドウの大きさを変えたとき、タイムライン上のインスタンス(my_mc)をつねに真ん中に置きます。
スクリプト001■インスタンスをつねにウィンドウの真ん中に置く
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- stage.addEventListener(Event.RESIZE, resizeHandler);
- resizeHandler(null);
- function resizeHandler(eventObject:Event):void {
- var nStageWidth:Number = stage.stageWidth;
- var nStageHeight:Number = stage.stageHeight;
- my_mc.x = nStageWidth / 2;
- my_mc.y = nStageHeight / 2;
- }
|
スクリプト001第3行目が、Stage.resizeイベントにリスナー関数(resizeHandler)を登録しています。リスナー関数(第5〜10行目)は、新たなステージサイズを調べたうえで(第6〜7行目)、インスタンス(my_mc)の位置を中央に定めます(第8〜9行目)。
なお、Stage.resizeイベントは、ウィンドウの大きさを変えなければ発生しません。スクリプト001第4行目は、インスタンスの初期位置をリスナー関数で定めるため、イベントを待つことなく直接呼出しています。ただし、引数にEventオブジェクトを求められるので、データ型の不一致とならないnullを渡しています。
参考
[ActionScript 3.0リファレンスガイド] > [Stage]「resizeイベント」
_____
作成者: 野中文雄
更新日: 2010年7月14日 Stage.scaleModeプロパティのリンクをFN1007001に変更。
作成日: 2010年6月24日