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

[actionscript3]
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);
}
}
}

[/actionscript3]

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

結果