Button Lua:当通过按钮转换传回场景时,值为零
我是编程新手——不到一年。 我使用两种类型的场景转换:一种带有按钮,另一种带有计时器。 我可以使用计时器将值传回场景,但无法使用按钮将值(在本例中为x)传回场景。该变量变得无效,并且该值完全消失,包括从模拟器输出中消失。X停止增加或发挥任何作用。我如何克服这个问题 --梅因·卢阿Button Lua:当通过按钮转换传回场景时,值为零,button,timer,lua,return-value,scene,Button,Timer,Lua,Return Value,Scene,我是编程新手——不到一年。 我使用两种类型的场景转换:一种带有按钮,另一种带有计时器。 我可以使用计时器将值传回场景,但无法使用按钮将值(在本例中为x)传回场景。该变量变得无效,并且该值完全消失,包括从模拟器输出中消失。X停止增加或发挥任何作用。我如何克服这个问题 --梅因·卢阿 display.setStatusBar( display.HiddenStatusBar ) x = 0 local composer = require "composer" composer.got
display.setStatusBar( display.HiddenStatusBar )
x = 0
local composer = require "composer"
composer.gotoScene("test1")
--test1.lua
local composer = require "composer"
local scene = composer.newScene()
function scene:create(event)
local screenGroup = self.view
local widget = require "widget"
local test2Btn
local function onTest2BtnRelease()
composer.gotoScene("test2")
return true
end
test2Btn = widget.newButton{
defaultFile = "images/pic1.png",
width= 480, height= 320,
onRelease = onTest2BtnRelease
}
screenGroup:insert(test2Btn)
end
x = x + 1
print("test1 x = "..x)
scene:addEventListener("create", scene)
return scene
--test2.lua
local composer = require "composer"
local scene = composer.newScene()
function scene:create(event)
local screenGroup = self.view
local widget = require "widget"
local test3Btn
local function onTest3BtnRelease()
composer.gotoScene("test3")
return true
end
test3Btn = widget.newButton{
defaultFile = "images/pic2.png",
width= 480, height= 320,
onRelease = onTest3BtnRelease
}
screenGroup:insert(test3Btn)
end
x = x + 1
print("test2 x = "..x)
scene:addEventListener("create", scene)
return scene
--test3.lua
local composer = require ( "composer")
local scene = composer.newScene()
function scene:createScene ( event )
local sceneGroup = self.view
end
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will") then
background = display.newImage( "images/pic3.png", 240, 160 )
sceneGroup:insert( background )
elseif ( phase == "did") then
local function showTest4()
local options = {
effect = "slideLeft",
time = 30,
}
composer.gotoScene( "test4", options )
end
timer.performWithDelay( 60000/40, showTest4 )
end
end
x = x + 1
print("test3 x = "..x)
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
end
function scene:destroy( event )
local sceneGroup = self.view
end
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
return scene
--test4.lua
local composer = require ( "composer")
local scene = composer.newScene()
function scene:createScene ( event )
local sceneGroup = self.view
end
function scene:show( event )
local sceneGroup = self.view
local phase = event.phase
if ( phase == "will") then
background = display.newImage( "images/pic4.png", 240, 160 )
sceneGroup:insert( background )
elseif ( phase == "did") then
local function showTest1()
local options = {
effect = "slideLeft",
time = 30,
}
composer.gotoScene( "test1", options )
end
timer.performWithDelay( 60000/40, showTest1 )
end
end
x = x + 1
print("test4 x = "..x)
function scene:hide( event )
local sceneGroup = self.view
local phase = event.phase
end
function scene:destroy( event )
local sceneGroup = self.view
end
scene:addEventListener( "create", scene )
scene:addEventListener( "show", scene )
scene:addEventListener( "hide", scene )
scene:addEventListener( "destroy", scene )
return scene
请尝试更详细地指定代码中哪些调用不能按预期工作。列出a)您的操作、b)程序输出以及与预期不同的注释Shello Ctx,在我的示例中,main.lua中的x设置为零。场景通过按钮或计时器从一个移动到另一个。在这个场景序列中,x每次递增:在test1.lua(通过按钮过渡到下一个场景)中,x=1。在test2.lua(通过按钮转换到下一个场景)中,x=2。在test3.lua(通过定时器转换到下一个场景)中,x=3。在test4.lua(通过定时器转换到下一个场景)中,x=4。但是在返回test1.lua(来自test4.lua)时,x=1。我需要x=5。输出模拟器不会打印出x的新值。谢谢。这真的是第二次转换到test1时的输出:“test1x=1”吗?与第一次转换完全一样?在深入研究之后,我无法相信test1.lua中的print命令会再次执行,因为框架只会对文件require()d执行一次,并在此之后重新使用。请更准确地描述该行为,您如何准确地看到test4.luaThe中composer.gotoScene(“test1”,options)后面的x=1该应用程序本质上是一个幻灯片放映,重复一系列场景,所有场景都有不同的数据。每次通过序列后,它都返回到起始位置–在本例中,这是test1.lua。为了在数据库中工作(示例中未显示),调用数据的变量必须每次递增。当场景更改是由(1)计时器对计时器场景更改中的计时器,(2)按钮对按钮场景更改中的按钮,(3)计时器对按钮对计时器场景更改中的计时器触发,但不是由(4)计时器对按钮场景更改中的计时器触发时,此功能正常。