Robotlegs の使用上のポイントメモ:Robotlegs, Starling, ActionScript

スクリーンショット 2013-02-17 1.39.50

Robotlegs 使用上のポイント

ActionScript3.0 のMVCフレームワーク robotlegs を利用する上でのメモです。

  • Actor を継承していない Model で Event Dispatch をしても Context に伝達しない。
  • Actor を継承していなくても、Inject する事は可能。
  • Actor を継承しているModelで Event Dispatchをする場合に、[Inject]を利用してインスタンス化されていない場合は、エラーがでる。
  • 初期化は[Post Construct]で行う。[Post Construct]はInjectionが終わった後に呼ばれるため。
  • コンストラクタの時点でinjectされていない事があった。Actorで確認。(contextの記述順が関係してる?)
  • Starling を一緒に使うプラグイン robotlegs-starling-plugin 利用時には、Model → View Mediator への Event 伝達は flash.events.Event を継承したクラス利用する。Mediator内で starling.events.Event と混在する事になる。
  • Command 内でmappingされているEventを取得する場合に、Eventの型が一致していないとエラーがでる。インターフェイスや親クラスで受けようとしてもエラーが出る。

強制的にMVC構造になるギプスみたいな感じで、楽しく使えています。


Shape を表示し、背景を透過させる : Starling , AIR for iOS

package
{
	import flash.display.BitmapData;
	import flash.display.Shape;

	import starling.display.Image;
	import starling.display.Sprite;
	import starling.textures.Texture;

	public class StarlingShape extends Sprite
	{
		public function StarlingShape()
		{
			super();

			//Shape作成
			var shape:Shape = new Shape();
			shape.graphics.beginFill(0xD0D0D0,1);
			shape.graphics.drawRoundRect(0,0,100,200,100,200);
			shape.graphics.endFill();

			//ShapeをBitmapDataに変換
			var bitmapData:BitmapData = new BitmapData(shape.width,shape.height,true,0xFFFFFF);
			bitmapData.draw(shape);

			//Starlingのテクスチャ、イメージ生成
			var texture:Texture = Texture.fromBitmapData(bitmapData);
			var image:Image = new Image(texture);

                        //StarlingのDisplaylistに追加
			addChild(image);
		}
	}
}

ADOBE AIRのAIR for iOSの2D向けGPU描画ライブラリのStarlingを使ってアプリを開発しています。StarlingにはShapeのクラスが無いので、ShapeをBitmapData経由でStarlingのTextureを生成する事で描画します。bitmapData生成時に第三引数をtrue,第四引数を0xFFFFFFにしないと、背景が透過されなかったので少しハマりましたのでメモ。

結果