如何动态放置一个显示对象相对于另一个显示对象



我想在参考对象的大小和位置变化时将图像放在另一个displayObject(向量对象)中。

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 Origin放置在memoRectX中心和Y TOP/0。

这是预期的行为吗?这是一个错误吗?

如何将DisplayObjects相对放置?

正确我在尝试不同的事情后得出的答案基本上是 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

现在一切都相对于彼此(实际上是它们所在的显示组)。这样,我可以移动一件事,另一件事将相对于该对象定位自己。

我不知道制作默认的display.CenterReferencePoint背后的荒谬逻辑,但这根本不是我可以想象的任何理由。

最新更新