Progression4(3)で超簡単にステージの情報を取得する方法
クラスライブラリやASDocsを読んでないと気付かないかもしれないのですがProgressionにはさまざまな便利なクラスやUtilityメソッドが存在します。
その中のひとつで何気に強力なプロパティを6つ紹介します。
- CastDocument.top
- CastDocument.bottom
- CastDocument.left
- CastDocument.right
- CastDocument.center
- CastDocument.middle
これらのプロパティはステージの四辺の座標を取得するためのものなのですが、StageAlignやStageScaleModeの組み合わせで微妙に変わってくる面倒な計算を行ってくれます。
topが上辺のY座標、bottomが下辺のY座標、leftが左辺のX座標、rightが右辺のX座標。またcenterがX方向の中心、middleがY方向の中心となります。
たとえば背景一面に模様を敷いたりする場合は次のように普通にGraphics.drawRectなどのメソッドで行うことが可能です。(幅と高さは普通にstage.stageWidth,stage.stageHeigthをつかいます)
import flash.display.Sprite; import flash.events.Event; improt jp.progression.casts.CastDocument; public class AllGroundFillRect extends Sprite { public function AllGroundFillRect() { addEventListener( Event.ADD_TO_STAGE, addToStage ); } private function addToStage( e:Event ):void { update(); } public function update():void{ graphics.beginFill( 0xFFFFFF ); graphics.drawRect( CastDocument.left, CastDocument.top, CastDocument.stage.stageWidth, CastDocument.stage.stageHeight ); graphics.endFill(); } }
次に単純なセンタリングなら次のようにスッキリかけます。
var sp:Sprite = new Sprite(); sp.graphics.beginFill(0xFF0000); sp.graphics.drawCircle(0, 0, 20 ); sp.graphics.endFill(); sp.x = CastDocument.center; sp.y = CastDocument.middle;
これはタイムラインでもつかえるので地味に便利だと思います。