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

当参考对象的大小和位置可能变化时,我想将一个图像放置在另一个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 原点放置在 memoRectX 中心和 Y 顶部 / 0。

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

如何相对于彼此放置 DisplayObjects

点赞
用户88888888
用户88888888

我试了几个小时后得出了正确的答案,基本上就是referencePoint的默认值错得离谱了,应该将它设置为display.TopLeftReferencePoint而不是display.CenterReferencePoint

我接下来执行了以下操作,一切都表现得出乎意料地好。

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-25 18:01:12