Archive for 9月, 2011
flashでローディング処理
苦労してローディングのコード書いてみたのにローディング画面が一瞬しか見えないです。泣けます。
ロード完了後も50フレーム見えるように変更しました。
外部のswfファイルを読み込んで処理しているのですがなぜか読み込めないswfファイルが多々あります。
その辺調べないとダメですね。
読み込んでいるのは自作のエフェクトライブラリで作った処理です。
今作ってるアプリなんかで使ってます。徐々にライブラリのエフェクトを増やしていきたいですね。
This movie requires Flash Player 9
package src{ import flash.events.*; import flash.display.*; import flash.utils.*; import fl.events.*; import flash.geom.*; import flash.net.*; import flash.text.TextField; import monochromebit.LocusTrain; public class MainClass extends Sprite { public var percentTxt:TextField; private var _disp:Sprite = new Sprite(); private var _snake:LocusTrain; private var _snake2:LocusTrain; private var _pos:Point = new Point(0,0); private var _pos2:Point = new Point(0,0); private var _degree:uint = 0; private var _degree2:uint = 0; private var _loader:Loader = new Loader(); private var _playBtm:PlayBtn = new PlayBtn(); /**コンストラクタ**/ public function MainClass() { if(stage) initialize(); else addEventListener(Event.ADDED_TO_STAGE, initialize); _playBtm.x = CENTER_X - (_playBtm.width/2) , _playBtm.y = CENTER_Y - (_playBtm.height/2); stage.addChild(_playBtm); _playBtm.addEventListener(MouseEvent.CLICK, onMouseClick); _disp.visible = false; _disp.addChild(_snake.runFrame(_pos)); _disp.addChild(_snake2.runFrame(_pos)); }//コンストラクタ END private function initialize(e:Event=null) { //フレーム毎イベント this.addEventListener(Event.ENTER_FRAME, onFrameFunc); //ローディング画像 _snake = new LocusTrain(snakeBox); _snake2 = new LocusTrain(snakeBox); stage.addChild(_disp); }//initialize END private function onMouseClick(e:Event):void{ //swfロード開始 _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); _loader.load(new URLRequest("http://monochromebit.com/knovlog/loaded.swf")); //ローディングアニメ表示オン _disp.visible = true; //ボタン画像消去 _playBtm.visible = false; }//onMouseClick END private function onFrameFunc(e:Event):void{ //一つ目回転位置計算 _degree += 15; if(_degree >= 360) _degree=0; var angle:Number = _degree*Math.PI/180; _pos = Point.polar(LEN,angle); //二つ目回転位置計算 _degree2 = _degree+180; if(_degree2 <= 0) _degree2=360; angle = _degree2*Math.PI/180; _pos2 = Point.polar(LEN,angle); //座標適用 _pos.offset(CENTER_X,CENTER_Y); _pos2.offset(CENTER_X,CENTER_Y); _snake.runFrame(_pos);//引数が座標 _snake2.runFrame(_pos2);//引数が座標 }//onFrameFunc END private function onProgress(event:ProgressEvent):void { var ratio:Number = event.bytesLoaded / event.bytesTotal; percentTxt.x = CENTER_X - 75 , percentTxt.y = CENTER_Y + 2; percentTxt.text = (ratio*100 |0)+"%"; //ロード完了 if(ratio == 1) { stage.addChild(_loader); //スイープ処理 removeChild(percentTxt); stage.removeChild(_disp); stage.removeChild(_playBtm); removeEventListener(Event.ENTER_FRAME, onFrameFunc); removeEventListener(ProgressEvent.PROGRESS, onProgress); removeEventListener(MouseEvent.CLICK, onMouseClick); }//if END }//onProgress END include "../resource/snakedata.as"//LocusTrainデータインクルード const LEN:Number = 30; const CENTER_X:uint = stage.stageWidth / 2; const CENTER_Y:uint = stage.stageHeight / 2; }//classEND }//packageEND