3
♥0 |
Line 71 |
Modified 2011-05-08 23:53:00 |
GPLv3 License
archived:2017-03-20 03:35:05
ActionScript3 source code
/**
* Copyright megane_bomb1 ( http://wonderfl.net/user/megane_bomb1 )
* GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
* Downloaded from: http://wonderfl.net/c/2Os8
*/
// forked from megane_bomb1's 3
package {
//画面表示の構築のコア
import flash.display.*;
//load()などのメソッドに渡される
import flash.net.URLRequest;
//イベント系
import flash.events.*;
//LoaderContextのため
import flash.system.*;
//text表示
import flash.text.*;
//Debug
import com.demonsters.debugger.MonsterDebugger;
public class Main extends Sprite {
// LoaderContextを準備
private var context:LoaderContext = new LoaderContext(true);
// イメージファイルをロードする
private var load_img:Loader = new Loader();
private var url:String = "http://farm2.static.flickr.com/1340/4727293104_c093890c85_b_d.jpg";
//private var url:String = "http://www.flickr.com/photos/megane_bomb/4727293104/sizes/l/";
//画像の場所の指定
private var url_img:URLRequest=new URLRequest(url);
private var h:int = 0;
private var aData:Array = new Array();
//fullscreanの為のフラグ
private var flg:int = 0;
//コンストラクタ
public function Main():void {
//一番はじめじゃないtrace使えない
MonsterDebugger.initialize(stage);
MonsterDebugger.trace(this,"first");
//初期化
setStage();
loadImage();
}
// ステージの設定
private function setStage():void {
stage.addEventListener( Event.RESIZE, resizeListener);
//NO_SCALEでないと、リサイズイベントが発生しない
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
}
//イメージの読み込み
private function loadImage():void {
load_img.load(url_img,context);
//読み込んだ後に実行される
load_img.contentLoaderInfo.addEventListener( Event.COMPLETE , onComplete );
}
private function onComplete( event:Event ):void {
MonsterDebugger.trace(this,"k");
// イメージのサイズを指定
var aData:Array = new Array();
aData = getResizeimg( load_img.width, load_img.height );
load_img.width = parseInt( aData[ 'width' ] );
load_img.height = parseInt( aData[ 'height' ] );
stage.addChild( load_img );
//removeひつよう?
//load_img.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);
}
//縦横比の対応関数
private function getResizeimg( width:int, height:int ):Array {
var tWidth:int;
var tHeight:int;
var h:Number;
//比率の計算
h = width/stage.stageWidth;
tHeight = height/h;
//横に合わせる
if(tHeight < stage.stageHeight){
tWidth = stage.stageWidth;
//縦に合わせる
}else{
h = height/stage.stageHeight;
tWidth = width/h;
tHeight = stage.stageHeight;
}
aData[ 'width' ] = String(tWidth);
aData[ 'height' ] = String(tHeight);
return aData;
}
//ブラウザのリサイズが行われたときに実行される
private function resizeListener( event:Event ):void {
//リサイズ時になぜかaddchildが消えている
MonsterDebugger.trace(this,this.contains(load_img));
MonsterDebugger.trace(this,"test");
if(flg == 0){ //初回
loadImage();
flg = 1;
MonsterDebugger.trace(this,"second");
}else{ //初回以外
aData = getResizeimg( load_img.width, load_img.height );
MonsterDebugger.trace(this,this.contains(load_img));
load_img.width = aData[ 'width' ];
load_img.height = aData[ 'height' ];
}
}
}
}