Corona SDK: Display text object 具有文本内容和可见性,但宽度为 nil

我正在尝试创建一个文本显示,但是出于某种原因,对象的宽度是 nil,尽管它具有文本内容。这是我的代码:

File1.lua:

local myTextDisplay = display.newText("2", display.contentWidth / 2, display.contentHeight / 2, native.systemFontBold)

File2.lua:

local myTextDisplay = File1:getTextDisplay() -- 在 File1.lua 中返回 myTextDisplay 的函数
print("显示文本: " .. myTextDisplay.text)
if myTextDisplay.isVisible then print("文本显示可见") end
print("文本显示宽度: " .. myTextDisplay.width)

第一次打开 File2 场景时,这个正常工作,并打印:

显示文本: 2
文本显示可见
文本显示宽度: 10.6599...

但是,当我第二次打开同一场景时(它没有被回收),最后一个打印语句会导致运行时错误:

显示文本: 2
文本显示可见
运行时错误
C:\....myGame.lua:20: 尝试连接字段 'width'(一个 nil 值)

这怎么可能呢?如果显示对象包含文本,它如何可能具有 nil 宽度?这是否与我每次打开非回收 File2 场景时获取相同的显示对象有关?任何建议都会受到赞赏!

点赞
用户1070361
用户1070361

我无法解决原来的问题,但我认为在场景之间传递显示对象可能存在一些固有问题,特别是当一个场景被回收时。

相反,我发现最好的解决方法是在每个场景中都有两个显示对象。然后,我将第一个场景对象的文本和其他属性传递到第二个场景,并创建第二个显示对象与第一个相同。

在场景之间传递数据似乎比传递显示对象更顺畅。

2016-07-07 16:44:27