我正在尝试创建文本显示,但由于某种原因,对象的宽度为零,尽管它有文本。这是我的代码:
File1.lua:
local myTextDisplay = display.newText("2", display.contentWidth / 2, display.contentHeight / 2, native.systemFontBold)
File2.lua:
local myTextDisplay = File1:getTextDisplay() --function in File1.lua that returns myTextDisplay
print("Displayed text: " .. myTextDisplay.text)
if myTextDisplay.isVisible then print("Text display is visible") end
print("Text display width: " .. myTextDisplay.width)
第一次打开File2场景时,这样可以正常工作,然后打印:
Displayed text: 2
Text display is visible
Text display width: 10.6599...
但是,当我第二次打开同一个场景(它没有被回收)时,最后一个print语句会导致运行时错误:
Displayed text: 2
Text display is visible
Runtime error
C:\....myGame.lua:20: attempt to concatenate field 'width' (a nil value)
这怎么可能?如果显示对象包含文本,它怎么可能有一个零宽度?是否与我每次打开非回收的File2场景时获得相同的显示对象这一事实有关?任何建议表示赞赏!
答案 0 :(得分:0)
我还没有能够解决原始问题,但我认为在场景之间传递显示对象可能存在一些固有的问题,特别是当一个场景被回收时。
相反,我发现最好的解决方法是简单地拥有两个显示对象,每个场景一个。然后我将对象的文本和其他属性从第一个场景传递到第二个场景,并创建第二个显示对象与第一个场景相同。
在场景之间传递数据似乎比传递显示对象更加顺畅。