リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ 背景画像だけ可変させる方法

ActionScript

背景画像だけ可変させる方法

「stageWidth」と「stageHeight」でブラウザサイズを取得し、背景画像サイズとブラウザサイズの比から、適正なサイズを算出する。
また、swfファイルをHTMLに埋め込む際は、HTMLファイルのswfファイル表示領域をwidth,heightを100%とする必要がある。

【サンプル】

背景画像だけ可変させるサンプル


【ActionScript3.0 サンプルソースコード】

//ステージスケール固定
stage.scaleMode = StageScaleMode.NO_SCALE;

/*--------------------------------背景画像--------------------------------*/

var mc:MovieClip = new Haikei();//シンボルのインスタンス化
mc.x=500;//x座標
mc.y=400;//y座標
this.addChild(mc);
var backWidth = 1000;//ステージ幅
var backHeight = 800;//ステージ高さ
var scale:Number;//ステージとブラウザのサイズ比

//ブラウザサイズに合せ拡大縮小を実行する関数
function backReseize(event):void {
	if (stage.stageWidth/backWidth > stage.stageHeight/backHeight) {//幅比が大きい場合
		scale = stage.stageWidth/backWidth;//幅サイズ比の算出
	} else {//高さ比が大きい場合
		scale = stage.stageHeight/backHeight;//高さサイズ比の算出
	}
	mc.scaleX = mc.scaleY = 1*scale;//サイズ変更の実施
}

//関数関連付け
stage.addEventListener(Event.RESIZE,backReseize);
stage.addEventListener(Event.ENTER_FRAME,backReseize);

/*--------------------------------テキスト--------------------------------*/

var mc2:MovieClip = new Text();//シンボルのインスタンス化
mc2.x=500;//x座標
mc2.y=400;//y座標
this.addChild(mc2);


ENTER_FRAMEを使用しないスクリプト追加
【ActionScript3.0 サンプルソースコード見直し版】

//----------------------------------------------------------------------------ステージスケール固定
stage.scaleMode = StageScaleMode.NO_SCALE;

//----------------------------------------------------------------------------変数
var bm_obj:BitmapData = new Haikei(0,0);//ビットマップオブジェクト設定
var bm01:Bitmap = new Bitmap(bm_obj);//ビットマップ表示リスト登録
var backWidth:Number = 1200;//基本ステージ幅
var backHeight:Number = 800;//基本ステージ高さ
var backRatio:Number = backWidth / backHeight;//基本横縦比
var stageRatio:Number = stage.stageWidth / stage.stageHeight;//ステージ横縦比
var backScale:Number;//画像スケール

//----------------------------------------------------------------------------スケール計算と背景配置
/*
横が長い(stageRatio >= backRatio)場合→ステージ幅を基準に画像サイズを決める
縦が長い(stageRatio < backRatio)場合→ステージ高さを基準に画像サイズを決める
*/
if ( stageRatio >= backRatio ) {//横が長い場合
	backScale = stage.stageWidth / backWidth;//幅を基準にスケール算出
} else {//縦が長い場合
	backScale = stage.stageHeight / backHeight;//高さを基準にスケール算出
}
addChildAt(bm01,0);
bm01.smoothing =true;//スムージング 有効
bm01.scaleX = bm01.scaleY = backScale;
bm01.x = (backWidth-bm01.width)/2;
bm01.y = (backHeight-bm01.height)/2;

//----------------------------------------------------------------------------リサイズ
stage.addEventListener(Event.RESIZE,backReseize);
function backReseize(e):void {
	stageRatio = stage.stageWidth / stage.stageHeight;//ステージ横縦比再算出
	if ( stageRatio >= backRatio ) {
		backScale = stage.stageWidth / backWidth;
	} else {
		backScale = stage.stageHeight / backHeight;
	}
	addChildAt(bm01,0);
	bm01.scaleX = bm01.scaleY = backScale;
	bm01.x = (backWidth-bm01.width)/2;
	bm01.y = (backHeight-bm01.height)/2;
}
last update 2009.5.27
参考・出典等
Riptac ブラウザのサイズを取得する方法

▲page top

topmemoblogtestaboutmail
Copylight(C)2008 Riptac. All Rights Reserved.