我有一个正常的工作文本字段...我使用以下方式实例化它:
local nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80)
nameTextField:addEventListener( "userInput", textListener )
然后我确保在创建方法中将其添加到场景的self.view中:
function scene:create( event )
local sceneGroup = self.view
sceneGroup:insert(nameTextField)
end
使用showoverlay
方法显示整个场景。
composer.showOverlay( "renameoverlay", options )
当我使用hide overlay
隐藏场景时:
composer.hideOverlay( "fade", 400 )
即使在使用上面的代码隐藏整个场景之后,nameTextField仍然留在屏幕上。 这不会发生在我的其他场景中。
可能导致这个???? 我该如何解决这个???
答案 0 :(得分:1)
首先,native.newTextField()可以添加到display.newGroup()中。将随组移动,但它们仍然位于显示层次结构的顶部。使用淡入淡出或crossFade的场景无法隐藏文本字段,因为它们没有被移动。
由于您的叠加层看起来像是使用“淡入淡出”,因此您需要在调用showOverlay时隐藏文本字段,并在完成叠加层时显示它们。
范围也很重要。我无法分辨您正在创建新文本字段的代码的哪一部分,但它必须在您引用它的任何位置都可见。
答案 1 :(得分:0)
似乎无法将本机对象添加到显示组中,您需要在隐藏场景时删除本机对象,请尝试以下操作:
添加场景:隐藏(事件)
function scene:hide(event)
if nameTextField then
nameTextField :removeSelf()
nameTextField = nil
end
end
scene:addEventListener("hide", scene)
希望这能帮到你!
答案 2 :(得分:0)
我很确定这是因为本地变量的访问问题。
更改此
local nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80)
到这个
nameTextField = native.newTextField (centerX, roundedRect.y + roundedRect.height*1.7, 300, 80)
或者
function scene:create( event )
local sceneGroup = self.view
sceneGroup:insert(nameTextField)
end
到这个
function scene:create( event )
sceneGroup = self.view
sceneGroup:insert(nameTextField)
end