我已经在这一段时间了,我尝试的一切都没有。当我按下playButton
时,我正试图这样做,场景变为scene2。
以下是代码:
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
---------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
---------------------------------------------------------------------------------
local image, playButton, helpButton, text3, memTimer
print("test")
-- Touch event listener for background image
local function onSceneTouch( self, event )
if event.phase == "began" then
storyboard.gotoScene( "scene2", "slideLeft", 800 )
return true
end
end
-- Called when the scene's view does not exist:
function scene:createScene( event )
local screenGroup = self.view
image = display.newImage( screenGroup, "openingbackground.png" )
image.x = _W * 0.5
image.y = _H * 0.5
screenGroup:insert( image )
local playButton = display.newImage( "playbutton.png" )
playButton.x = _H * 0.33
playButton.y = _W * 0.90
playButton.xScale = 0.5
playButton.yScale = 0.5
playButton.touch = onSceneTouch
screenGroup:insert( playButton )
local helpButton = display.newImage ("helpbutton.png")
helpButton.x = _H * 0.33
helpButton.y = _W * 1.1
helpButton.xScale = 0.5
helpButton.yScale = 0.5
screenGroup:insert( helpButton )
playButton:addEventListener("touch", playButton)
end
-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
end
-- Called when scene is about to move offscreen:
function scene:exitScene( event )
print( "1: exitScene event" )
-- remove touch listener for image
image:removeEventListener( "touch", image )
-- cancel timer
timer.cancel( memTimer ); memTimer = nil;
-- reset label text
text2.text = "MemUsage: "
end
-- Called prior to the removal of scene's "view" (display group)
function scene:destroyScene( event )
print( "1: destroyScene event" )
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 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
我得到的错误是:
Corona Runtime Error: ?:0? attempt to index a nil value stack traceback: ... Do you want to relaunch the project?
有人有任何想法吗?
答案 0 :(得分:0)
这是你需要做的:
-- Touch event listener for background image
local function playButtonTouched( event )
storyboard.gotoScene( "scene2", {effect = "slideLeft", time = 800} )
return true
end
-- Called when the scene's view does not exist:
function scene:createScene( event )
local screenGroup = self.view
local playButton = display.newImage( "playbutton.png" )
playButton.x = _H * 0.33
playButton.y = _W * 0.90
playButton.xScale = 0.5
playButton.yScale = 0.5
screenGroup:insert( playButton )
playButton:addEventListener("tap", playButtonTouched)
end
这是您要完成的一个干净的版本。
答案 1 :(得分:0)
尝试对您的代码执行此操作:
local storyboard = require( "storyboard" )
local scene = storyboard.newScene()
- 隐藏状态栏
display.setStatusBar( display.HiddenStatusBar )
- 触摸背景图片的事件监听器
local function onSceneTouch(event)
if event.phase == "began" then
if event.target.id == "button1" then
storyboard.gotoScene( "scene2", "slideLeft", 800 )
return true
end
end
end
- 当场景视图不存在时调用
function scene:createScene( event )
print( "1: createScene event" )
end
- 场景移动到屏幕后立即调用:
function scene:enterScene( event )
local screenGroup = self.view
local image = display.newImage( screenGroup, "openingbackground.png" )
image.x = _W * 0.5
image.y = _H * 0.5
local playButton = widget.newButton
{
left = _H * 0.33,
top = _W * 0.90,
width = 60,
height = 10,
defaultFile = "playbutton.png",
overFile = "playbutton.png",
id = "button1",
emboss = true,
onEvent = onSceneTouch,
}
screenGroup:insert(playButton)
local helpButton = widget.newButton
{
left = _H * 0.33,
top = _W * 1.1,
width = 60,
height = 10,
defaultFile = "helpButton.png",
overFile = "helpButton.png",
id = "button1",
emboss = true,
onEvent = onSceneTouch,
}
screenGroup:insert(helpButton)
print( "1: enterScene event" )
end
- 当场景即将移出屏幕时调用:
function scene:exitScene( event )
print( "1: exitScene event" )
end
- 在删除场景的“视图”(显示组)之前调用
function scene:destroyScene( event )
print( "1: destroyScene event" )
end
- 如果场景视图不存在,则调度“createScene”事件
scene:addEventListener( "createScene", scene )
- 每当场景转换完成时调度“enterScene”事件
scene:addEventListener( "enterScene", scene )
- 在下一个场景的转换开始之前调度“exitScene”事件
scene:addEventListener( "exitScene", scene )
- 在卸载视图之前调度“destroyScene”事件,这可以是 - 在内存不足的情况下自动卸载,或通过调用显式自动卸载 - storyboard.purgeScene()或storyboard.removeScene()。
scene:addEventListener( "destroyScene", scene )
return scene
答案 2 :(得分:0)
试试这个
playButton = display.newImage( "playbutton.png" )
playButton.x = _H * 0.33
playButton.y = _W * 0.90
playButton.xScale = 0.5
playButton.yScale = 0.5
playButton.touch = onSceneTouch
playButton:addEventListener("touch", onSceneTouch)
screenGroup:insert( playButton )
因为你已经将playButton声明为开头本身,所以不需要在createScene中声明为local。