0

参照オブジェクトのサイズと位置が異なる場合に、別の DisplayObject ( Vector Object ) に画像を配置したいと考えています。

local memoRect = display.newRect(135,100,440,540)
local memoTitle = display.newImage("images/memobg.png", 135, 100)

の境界memoTitle memoRectに相対的に配置したい。しかし、次のコードは機能しません。

local memoRect = display.newRect(135,100,440,540)
local memoTitle = display.newImage("images/memobg.png", memoRect.x + 10, memoRect.y + 20)

memoTitle上記のコードは左上に配置されると予想されますが、memoRect代わりに、このコードはmemoTitle原点をX中央memoRectY上/0 に配置します。

これは予想される動作ですか?これはバグですか?

DisplayObjects相互に相対的に配置するにはどうすればよいですか?

4

1 に答える 1

0

さまざまなことを数時間試した後に私が導き出した正解は、基本的にreferencePointデフォルトがではdisplay.CenterReferencePointなく、ばかげて設定されていることですdisplay.TopLeftReferencePoint

次のことを行うと、すべてが期待どおりに動作しました。

local memoRect = display.newRect(0,0,440,540)
local memoTitle = display.newImage("images/memobg.png", 0, 0)
memoRect:setReferencePoint(display.TopLeftReferencePoint)
memoTitle:setReferencePoint(display.TopLeftReferencePoint)
memoRect.x = 135; memoRect.y = 100
memoTitle.x = memoRect.x + 10; memoTitle.y = memoRect.y + 20

これで、すべてが相互に関連して機能しています(実際にはそれらが含まれているDisplayGroup)。このようにして、1つのものを移動でき、他の物はそのオブジェクトに対して相対的な位置に配置されます。

デフォルトを作成する背後にある不条理な論理はわかりませんが、display.CenterReferencePoint私が想像できる理由はまったく論理的ではありません。

于 2012-10-25T18:01:12.497 に答える