所以,我有一个使用电晕故事板的程序。 有一个场景1,用户可以在文本框中键入内容,还有另一个场景,场景2,我有一些文本。问题是,当用户使用文本框离开场景时,文本框仍会出现在屏幕上。我已经尝试使用删除它的removeSelf()。但问题是,如果我使用removeSelf(),文本框将永远消失,即使用户返回场景1,它仍然消失了! 我怎么能解决这个问题?这是场景1的代码:
--
-- view1.lua
--
-----------------------------------------------------------------------------------------
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
function scene:createScene( event )
local group = self.view
local bg = display.newRect( 0, 0, display.contentWidth, display.contentHeight )
bg:setFillColor(0,255,0 ) -- green
local title = display.newText( "Second View", 0, 0, native.systemFont, 32 )
title:setTextColor( 0 ) -- black
title:setReferencePoint( display.CenterReferencePoint )
title.x = display.contentWidth * 0.5
title.y = 125
local summary = display.newText( "Loaded by the first tab 'onPress' listener\n— specified in the 'tabButtons' table.", 0, 0, 300, 300, native.systemFont, 14 )
summary:setTextColor( 0 ) -- black
summary:setReferencePoint( display.CenterReferencePoint )
summary.x = display.contentWidth * 0.5 + 10
summary.y = title.y + 215
local function textListener( event )
if ( event.phase == "began" ) then
-- user begins editing text field
print( event.text )
elseif ( event.phase == "ended" ) then
-- text field loses focus
elseif ( event.phase == "ended" or event.phase == "submitted" ) then
-- do something with defaulField's text
elseif ( event.phase == "editing" ) then
print( event.newCharacters )
print( event.oldText )
print( event.startPosition )
print( event.text )
end
end
-- Create our Text Field
defaultField = native.newTextField( 150, 150, 180, 30 )
defaultField:addEventListener( "userInput", textListener )
-- all objects must be added to group (e.g. self.view)
group:insert( bg )
group:insert( title )
group:insert( summary )
end
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
-- do nothing
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
local group = self.view
-- INSERT code here (e.g. stop timers, remove listenets, unload sounds, etc.)
end
-- If scene's view is removed, scene:destroyScene() will be called just prior to:
function scene:destroyScene( event )
local group = self.view
-- INSERT code here (e.g. remove listeners, remove widgets, save state variables, etc.)
end
-----------------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
-----------------------------------------------------------------------------------------
-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )
-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )
-- "exitScene" event is dispatched whenever before next scene's transition begins
scene:addEventListener( "exitScene", scene )
-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )
-----------------------------------------------------------------------------------------
return scene
答案 0 :(得分:0)
那么也许你可以用alpha来隐藏组中的所有元素?
group.alpha=0
答案 1 :(得分:0)
您需要在场景中添加文本框:enterScene方法并在场景中删除它:exitScene。
Corona在创建场景时只调用一次createScene,但是当场景移入或移出堆栈时,它会调用enterScene和exitScene。这些是创建/删除元素的地方。
有关电晕屏幕管理的更多信息,请阅读this。它主要关注的是清理场景中使用的资源,示例是关于声音的,但它适用于您正在尝试的内容,并解释了Corona中的场景管理。