ステージのリサイズに合わせて位置を変更させる

| comment (0) | trackback (0)

Stage クラスの resize イベントが発生するたびにステージの幅と、高さを取得しムービークリップの位置を変更することができます。

ステージサイズが変更されたとき発生する Stage クラスの resize イベントを利用します。
イベントが発生するたびに Stage クラスのstageWidth プロパティ、 stageHeight プロパティを取得し MovieClip クラスのインスタンスがステージの中央に来るように移動させます。

次のコードは、引数で渡した MovieClip クラスのインスタンスをステージサイズが変更される度にステージの中央に配置するクラスです。

SetStageCenter.as

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

	public class SetStageCenter extends Sprite {
		private var mc:MovieClip;

		private var w:Number;
		private var h:Number;

		function SetStageCenter (mc:MovieClip) {
			this.mc = mc;

			w = mc.stage.stageWidth;
			h = mc.stage.stageHeight;

			setCenter (w, h);

			mc.stage.addEventListener (Event.RESIZE,onStageResize);
		}

		private function onStageResize (event:Event):void {
			w = mc.stage.stageWidth;
			h = mc.stage.stageHeight;

			setCenter (w, h);
		}

		private function setCenter (w:Number,h:Number):void {
			mc.x = w/2;
			mc.y = h/2;
		}
	}
}

Stage は最上位の表示オブジェクトコンテナです。

Stage クラスのインスタンスは、直接操作することができません。表示オブジェクトの stage プロパティからアクセスする事になります。

ここでは、引数で渡した MovieClip クラスのインスタンスを介して Stage クラスのインスタンスにアクセスしています。

mc.stage.stageWidth;
mc.stage.stageHeight;
メインのタイムラインは stage に最初から追加されている表示オブジェクトコンテナです。
Flash の IDE 環境では Stage には最初から MovieClip クラスのインスタンスがひとつ追加されています。このインスタンスがメインタイムラインです。通常はこの表示オブジェクトコンテナでもある MovieClip クラスのインスタンス(メインタイムライン)に表示オブジェクトを追加していくことになりますので表示リストは、Stage を頂点とした階層構造を持つことになるのです。

次に示すのは、SetStageCenter クラスを生成するコードです。

SetStageCenter.fla

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

var mySetStageCenter:SetStageCenter = new SetStageCenter(mc);

mc はメインタイムラインに配置された MovieClip クラスのインスタンスです。

このクラスを正しく動作させるために Stage クラスの scaleMode プロパティと align プロパティを設定しなければなりません。

stage.scaleMode = StageScaleMode.NO_SCALE;

これは、Flash Player の領域が変更されても、SWF ムービーのサイズが変更されないための設定です。
stage.scaleMode プロパティを "noScale" に設定すれば、SWF ムービーは、オーサリング時に指定されたステージサイズで表示されます。SWFムービーのサイズより FlashPlayer の領域が広ければ背景色の余白が表示され、小さければトリミングされます。
これは、ムービーを 100% で表示することになります。

stage.stageWidth、stage.stageHeight プロパティは、stage. scaleMode プロパティが "noScale" ( StageScaleMode.NO_SCALE )に設定されている場合以外は、SWF ファイルのドキュメントプロパティに設定されたサイズが返されます。
[パブリッシュ設定]ダイアログボックス内の HTML タブで指定されたパラメータ幅、高さとも 100% に設定した場合、HTML を表示するブラウザのサイズが適用されます。

stage.align = StageAlign.TOP_LEFT;

stage.align プロパティは、Flash Player またはブラウザでのステージの配置を指定します。
値を StageAlign.TOP_LEFT にした場合は、上、左端揃えで配置します。

trackback (0)

trackback URL: http://gelsol.sub.jp/core/mt-tb.cgi/30

Post your comment