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 )。这样我可以移动一件东西,而其他东西将相对于该物体定位自己。

我不知道默认设置背后的荒谬逻辑,display.CenterReferencePoint但我能想象的任何推理都不合逻辑。

于 2012-10-25T18:01:12.497 回答