CoronaSDK: Graphics2.0での基準点

CoronaSDKがGraphics2.0に移行したことで、新機能や描画性能向上などの恩恵もある一方、以前のGraphics1.0の一部機能が非対応になったり、仕様変更されたりしたので、以前のプロジェクトの表示が崩れるということも出てきます。
ここではGraphics2.0でのオブジェクト基準点についてまとめておきます。

参考となるのは、本家ブログの以下の記事
Tutorial: Anchor Points in Graphics 2.0

まず、setReferencePointメソッドや、xReference・yReferenceプロパティは廃止され、Graphics2.0ではanchorX,anchorYプロパティを使用することになります。
ブログ記事中の時計の針グラフィックで説明されている通り、基準点を制御できます。
※余談ですが、Graphics1.0ではsetReferencePointで左上指定しても、widthによる変形の基準点がセンターになるのが厄介でしたが、これもGraphics2.0では解消されています。

Anchor Points and Groups
通常Groupは境界のない延々と続く平面という感じでしたが、Graphic2.0で用意された.anchorChildrenプロパティをtrue設定することで、グループの中心点を、その内包する子オブジェクト全ての表示領域の中心に設定することができます。
子オブジェクトが移動したように見えますが、子オブジェクトが座標移動したわけではなく、あくまで親であるグループの基準点が移動し、そのために全体が移動したように見えるようになります。
GroupのanchorChildrenはデフォルトはfalseになっています。

Anchor Points and Containers
Containerという、Groupと良く似たAPIが登場しました。Containerをnewするときにサイズ指定でき、内包する子オブジェクトをそのサイズでクロッピング(切り抜き)表示することができます。こちらは.anchorChildrenプロパティがデフォルトでtrueになっています。
※テストしてみたところ、Containerオブジェクトと同じ階層にオブジェクトを置いたりすると、クロッピング表示されなかったりしたので、もうすこし仕様と挙動を検証しないと危なっかしい印象を持ちました。

From Graphics 1.0 to 2.0
Graphics1.0では位置(0,0)でnewRectした時に(実際の基準点はオブジェクト中央なのに)左上基準で配置される状況がありましたが、2.0では整合をとってオブジェクトの中央基準で配置されるようになりました。

Version 1.0 Compatibility Mode
これらのように、基準点が変わることで、昔のプロジェクトの表示が崩れるといった状況が発生しますが、移行処置としてconfigファイルでgraphicsCompatibilityを指定することで、Graphics1.0のような表示をすることができます。移行処置としてこういった設定が用意されているようです。

Default Anchor Point
オブジェクト個別に基準点設定するだけでなく、setDefault(“anchorX”,0)といった設定をすることで、その宣言以下でnewするオブジェクトの基準点を事前指定しておけます。

GontainerAPIの詳細
Tutorial: Containers in Graphics 2.0
の記事も目を通しておいたほうが良いと思います。