package {
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.PixelSnapping;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.net.URLRequest;
public class Main extends Sprite {
public function Main() {
var loader:Loader = new Loader();
var info:LoaderInfo = loader.contentLoaderInfo;
//ビットマップデータの読み込み
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest("image.jpg"));
//ステージのスケールを固定で、原点を左上に
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
//ビットマップの読み込みが完了した時
function onComplete(event:Event):void {
var bmd:BitmapData = new BitmapData(info.width, info.height);
var bm:Bitmap = new Bitmap(bmd, PixelSnapping.NEVER, true);
//ビットマップを描画
bmd.draw(loader);
stage.addChild(bm);
adjustBitmap(bm);
}
//ビットマップをステージのサイズに合わせる
function adjustBitmap(bm:Bitmap):void {
var inner:Number = bm.width/bm.height; //ビットマップの縦横比
var outer:Number; //ステージの縦横比
//ステージのサイズが変更された時
stage.addEventListener(Event.RESIZE, transSize);
transSize();
//ビットマップを拡大・縮小
function transSize():void {
var size_x:uint = stage.stageWidth;
var size_y:uint = stage.stageHeight;
outer = size_x/size_y;
//ビットマップ、ステージの縦横比を比較してサイズを変更
if (inner >= outer) {
size_x = size_x*(inner/outer);
} else {
size_y = size_y*(outer/inner);
}
bm.width = size_x;
bm.height = size_y;
}
}
}
}
}