Flash Pro CC, Starlingでフラットスプライト機能を使ってパワフル描画

Flash Pro CC, Starlingでフラットスプライト機能を使ってパワフル描画

Starling のフラットスプライト機能は、パフォーマンスの高い描画を実現するようです。

Flash Pro CC, Starlingの描画APIを使ってグラフィックを描く : デモ

Flash Pro CC, Starlingの描画APIを使ってグラフィックを描く : ZIPファイル(77kb)

1.Main.fla

1. Flashコンテンツのパフォーマンスをグラフ化するstatsをダウンロードします。

statsサイト(外部サイト):http://github.com/mrdoob/Hi-ReS-Stats

2. Flash Professional CC にダウンロードしたstatsファイルを以下のように、Flashメニューから設定します。

Flash – 環境設定 – コンパイラー – ソースパス で、Hi-ReS-Stats-master/src を設定します。

3. Starlingファイルをダウンロードします。

Starlingサイト(外部サイト):http://gamua.com/starling/

4. Flash Professional CC にダウンロードしたstarlingファイルを以下のように、Flashメニューから設定します。

Flash – 環境設定 – コンパイラー – ソースパス で、starling/src を設定します。

Flash – 環境設定 – コンパイラー – ライブラリパス で、starling/bin を設定します。

5. プロパティのクラスに「StartUp」を記述します。

6. ライブラリに画像を読み込む。

上部メニューから「ファイル – 読み込み – ライブラリに読み込み」で、ライブラリに表示する画像を読み込みます。

読み込んだライブラリの画像をクリックし、「ビットマッププロパティ」を表示します。

「ビットマッププロパティ」の「ActionScript」のタブをクリックし、「ActionScript用書き出し」をチェック。

クラス名は、最初の一文字目は大文字にし、任意に決めます。

ビットマッププロパティの設定

2.StartUp.as

プログラム言語は、ActionScript3.0です。

package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import starling.core.Starling;
	import net.hires.debug.Stats;
	
	public class StartUp extends Sprite
	{
		private var mStarling:Starling;
		
		public function StartUp()
		{
			//fps計測用クラス
			addChild(new Stats());
			
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			//starlingインスタンスの作成
			
			//ネイティブの表示リストでサポートされているcacheAsBitmap(ビットマップキャッシュ)機能に似ている。
			//フラットスプライト 描画のパフォーマンスが向上する。
			mStarling = new Starling(FlattenSprite, stage);
			
			//アンチエイリアスの設定 0:アンチなし、2:最小限のアンチエイリアス、4:高品質、6:最高品質
			mStarling.antiAliasing = 2;
			
			//スタート
			mStarling.start();
		}
	}
}

3.FlattenSprite.as

package
{
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	
	import starling.display.Image;
	import starling.display.Sprite;
	import starling.events.Event;
	import starling.textures.Texture;
	import starling.utils.deg2rad;
	
	public class FlattenSprite extends Sprite
	{
		private var container: Sprite;
		private static const NUM_BOYS: uint = 400;
		
		//[Embed(source = "boy.png")]
		//private static const BoyParachute: Class;
		
		public function FlattenSprite()
		{
			addEventListener(Event.ADDED_TO_STAGE, onAdded);
		}
		private function onAdded(e: Event): void
		{
			// コンテナの作成 
			container = new Sprite();
			addChild(container);
			// 基準点の変更
			container.pivotX = stage.stageWidth >> 1;
			container.pivotY = stage.stageHeight >> 1;
			container.x = stage.stageWidth >> 1;
			container.y = stage.stageHeight >> 1;
			// 埋め込んだイメージから Bitmap オブジェクトを作成 
			
			//Flash Builderを使う場合
			//var pigTexture:Bitmap = new BoyParachute();
			
			var boyBitmapData:BitmapData = new Boy(0, 0);
			var boyTexture:Bitmap = new Bitmap(boyBitmapData);
			
			// Image オブジェクトに与える Texture オブジェクトを作成 
			var texture:Texture = Texture.fromBitmap(boyTexture);
			// ブタの配置
			for (var i: uint = 0; i < NUM_BOYS; i++)
			{
				// 新しいブタの作成
				var boy:Image = new Image(texture);
				// ランダムな位置
				boy.x = Math.random() * stage.stageWidth;
				boy.y = Math.random() * stage.stageHeight;
				boy.rotation = deg2rad(Math.random() * 360); // 画像をコンテナにネスト
				container.addChild(boy);
			}
			container.pivotX = stage.stageWidth >> 1;
			container.pivotY = stage.stageHeight >> 1;
			// 画像を表示 addChild( container );
			// 毎フレーム呼び出す
			stage.addEventListener(Event.ENTER_FRAME, onFrame);
		}
		
		private function onFrame(e: Event): void
		{
			// コンテナを回転
			container.rotation += .1;
		}
	}
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です