当在函数中时,前景中的对象。

大家好,我在尝试在我的程序中插入一个元素时遇到了麻烦(该程序使用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,但是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出现在前景中。

我该怎么做才能解决这个问题?谢谢! :)

点赞
用户1442917
用户1442917

你使用 performWithDelay 延迟执行一个函数。这样做会导致 localGroup:insert(obD)localGroup:insert(myText) 要晚执行,因此它会在前景。

你可以将第一个 insert 改为 localGroup:insert(1, obD),来“强制”它的索引以将其置于背景。有关详细信息,请参见 GroupObject

2013-10-01 01:42:42
用户1979583
用户1979583

你可以选择使用(正如Paul建议的那样):

localGroup:insert(1, obD) --这将使 `obD`的z-index为1

或者:

myText:toFront()  --这将强制将`myText`的索引值设置为最高值/向前

注意:

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

继续编码……:)

2013-10-01 04:26:00