更に修正
Layout関連の処理がどうしても不具合が起こりまくりだったので、更に修正を加えました。
位置再計算するメソッドの制限
今回の修正で、位置再計算を行うメソッドを、以下のものに制限しました。
snapメソッドは、呼び出しただけでは位置再計算は行わないので、snapした後に以下のメソッドを呼び出します。
- left
- outeside_left
- center
- right
- outeside_right
- top
- outeside_top
- middle
- bottom
- outeside_bottom
- move
- move_to
レイアウト情報の所持を廃止
これまで、先に指定したレイアウト情報は個別に持っていたのですが、これを取りやめて、再計算のみ行うようにしました。
つまり、スナップ元とスナップ先の位置の差分のみ、位置再計算時に参考にするだけとなります。
そのため、スナップ元の位置情報が狂う場合がございますので、必要なときは、先にスナップを行ってからレイアウト関連メソッドを呼び出してください。
メソッドの追加とインタフェース変更
ついでに、レイアウト関係のメソッド実装をシンプルにするため、以下のメソッドを追加しました。
- outeside_left
- outeside_right
- outeside_top
- outeside_bottom
これらは、すべて"〜(:outside)"を指定したときと同じ動きになります。
また、既存メソッドのインタフェースが以下のように変更されます。
- left,right,center,top,bottom,middleメソッドの引数を廃止(outside_〜メソッドを追加したため)
- center,middleメソッドのブロック渡しを廃止
[追記]
あと、SpriteAnimation#startにもバグがあったので修正しました。