2016-06-23 31 views
0

我试图创建文本显示,但由于某种原因,对象的宽度为零,尽管它具有文本。这里是我的代码:Corona SDK:显示文本对象有文本并且可见,但宽度为零

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) 

我第一次打开文件2的场景,这工作得很好,并打印:

Displayed text: 2 
Text display is visible 
Text display width: 10.6599... 

但是,当我第二次打开相同的场景时(它不会被回收),最后一个打印语句会导致运行时呃ror:

Displayed text: 2 
Text display is visible 
Runtime error 
C:\....myGame.lua:20: attempt to concatenate field 'width' (a nil value) 

这怎么可能?如果显示对象包含文本,它怎么可能有一个零宽度?这是否与我每次打开未经回收的File2场景时获得相同的显示对象有关?任何建议感激!

+0

对象的文本只是一个属性。与宽度相同。你可以确实有一个文本,而没有宽度。问题是为什么宽度为零。 我认为你应该提供更多的代码。特别是你从file1到file2的东西部分。 – Piglet

回答

0

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

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

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

相关问题