3

你们大家,当我尝试在我的程序中插入一个元素时遇到麻烦(使用 Corona SDK 制作,因此使用 LUA)。

问题是当我在函数中插入一个对象时,它会出现在前台,即使我在我的代码中声明了函数中的对象之后的另一个对象

例如,如果我写

local function obD()

local obD = display.newRect(_W-30, _H/2+160, 10, math.random(-140, -20))
localGroup:insert(obD)
obD.isFixedRotation = true
obD:setFillColor(255, 0, 0)

end

tmrD = timer.performWithDelay(1500, obD, maxOb)


local myText = display.newText("Hello World", _W-30, 310, "PUSAB", 8)
localGroup:insert(myText)

应该在前景中的对象将是 myText,但 insted 出现 obD,而如果我写

local obD = display.newRect(_W-30, _H/2+160, 10, math.random(-140, -20))
localGroup:insert(obD)
obD.isFixedRotation = true
obD:setFillColor(255, 0, 0)

local myText = display.newText("Hello World", _W-30, 310, "PUSAB", 8)
localGroup:insert(myText)

myText 按原样显示(出现在前台)

我能做些什么来解决这个问题?谢谢!:)

4

2 回答 2

1

您使用performWithDelay,它会延迟函数的执行。这会导致localGroup:insert(obD)在执行后localGroup:insert(myText)执行,这会将其置于前台。

您可以将第一个插入更改localGroup:insert(1, obD)为“强制”其索引并将其置于后台。有关详细信息,请参阅GroupObject

于 2013-10-01T01:42:42.513 回答
1

您可以使用(如保罗建议的那样):

localGroup:insert(1, obD) -- This will make `obD` z-index to 1

或者:

myText:toFront()  -- This will force the index of `myText` to the highest value/force forward

笔记:

  • 仅在创建后调用这些方法中的任何一个obD(根据您的代码)。
  • 使用第二种方法时,请确保您myText在全局首选项中声明。(即,您必须local myText在场景顶部声明 myText)。

继续编码...... :)

于 2013-10-01T04:26:00.753 回答