ひっと

フェードイン/フェードアウトの実装 ActionScript(AS3)

~ Flashアプリ、ゲームのためのAS3サンプルプログラム集 ~

フェードイン/フェードアウトの実装

矩形を画面いっぱいに描画しておき、時間の経過に合わせてアルファ値を操作することでフェードインやフェードアウトを表現できます。
白い矩形で描くとホワイトアウトの表現ができます。

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	
	[SWF(width="400", height="300", backgroundColor="0x333333", frameRate="30")]
	public class Main extends Sprite
	{
		//背景画像
		[Embed(source='./haikei.jpg')] private var imgHaikei:Class;

		//フェード用スプライト
		private var fadeSprite:Sprite;

		//EnterFrameでの処理対象
		private var curr_roop:Function;

		public function Main()
		{
			//背景作成
			this.addChild(new imgHaikei());

			//黒い矩形作成
			fadeSprite = new Sprite();
			fadeSprite.graphics.beginFill(0x000000,1);
			fadeSprite.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);//画面サイズはstage.stageWidth,stage.stageHeight。
			fadeSprite.alpha = 0;
			this.addChild(fadeSprite);

			curr_roop = Turn_FadeIn;

			stage.addEventListener(Event.ENTER_FRAME, OnEnterFrame);

		}
		
		//フェードイン
		private function Turn_FadeIn():void
		{
			if ( fadeSprite.alpha < 1 ) {
				fadeSprite.alpha += 0.01;
			} else {
				//フェードインが終わったらフェードアウトへ
				curr_roop = Turn_FadeOut;
			}
		}
		
		//フェードアウト
		private function Turn_FadeOut():void
		{
			if ( fadeSprite.alpha > 0 ) {
				fadeSprite.alpha -= 0.01;
			} else {
				//フェードアウトが終わったらフェードインへ
				curr_roop = Turn_FadeIn;
			}
		}
		
		private function OnEnterFrame(e:Event):void
		{
			curr_roop();
		}
	}
}
目次へ
52888