Corona SDK - TextField在屏幕上向左移动

时间:2016-01-05 17:44:29

标签: lua corona

我有一个正常的工作文本字段...我使用以下方式实例化它:

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仍然留在屏幕上。 这不会发生在我的其他场景中。

可能导致这个???? 我该如何解决这个???

3 个答案:

答案 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