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
サイト内捜索
キャレンダァ
2011年9月
« 5月   1月 »
 1234
567891011
12131415161718
19202122232425
2627282930