events - Corona SDK game scenes -
i looked in many other questions , tutorials, sadly, without result. trying go scene1 scene2 event listener , copying code given in project. difference between button , working 1 declare mine in lua file , not exist in scene1.ccscene have put image object in scene1.csscene in order use button?
the code try:
local composer = require( "composer" ) local scene = composer.newscene() -- ----------------------------------------------------------------------------------------------------------------- -- code outside of listener functions executed once unless "composer.removescene()" called. -- ----------------------------------------------------------------------------------------------------------------- -- local forward references should go here local start_button = display.newimage("start.png") --start button -- ------------------------------------------------------------------------------- -- "scene:create()" function scene:create( event ) local scenegroup = self.view -- initialize scene here. -- example: add display objects "scenegroup", add touch listeners, etc. start_button.x=200 start_button.y=150 end -- "scene:show()" function scene:show( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene still off screen (but come on screen). elseif ( phase == "did" ) -- called when scene on screen. -- insert code here make scene come alive. -- example: start timers, begin animation, play audio, etc. function nextscene:touch ( event ) local phase = event.phase if "ended" == phase composer.gotoscene( "scene2", { effect = "fade", time = 300 } ) end end start_button:addeventlistener( "touch", nextscene ) end end -- "scene:hide()" function scene:hide( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene on screen (but go off screen). -- insert code here "pause" scene. -- example: stop timers, stop animation, stop audio, etc. elseif ( phase == "did" ) -- called after scene goes off screen. if nextscenebutton start_button:removeeventlistener( "touch", nextscene ) end end end -- "scene:destroy()" function scene:destroy( event ) local scenegroup = self.view -- called prior removal of scene's view ("scenegroup"). -- insert code here clean scene. -- example: remove display objects, save state, etc. end -- ------------------------------------------------------------------------------- -- listener setup scene:addeventlistener( "create", scene ) scene:addeventlistener( "show", scene ) scene:addeventlistener( "hide", scene ) scene:addeventlistener( "destroy", scene ) -- ------------------------------------------------------------------------------- return scene
the extension of scene files needs ".lua
" in corona. think "csscene
" has cocoa.
the code below work.
notes:
- make sure files ends .lua (
main.lua
,scene1.lua
,scene2.lua
). start_button
rectangle can easy change image.start_button
added scenegroup. group scene use i.e. when change scene objects in scenegroup handled properly.- i add
eventlistener
in different way, please read documentation more information: https://docs.coronalabs.com/api/event/touch/index.html
main.lua:
local composer = require( "composer" ) composer.gotoscene("scene1")
scene1.lua:
local composer = require( "composer" ) local scene = composer.newscene() -- variables local start_button -- events local function ontouchstartbutton( event ) if event.phase == "ended" composer.gotoscene( "scene2" ) end end function scene:create( event ) local scenegroup = self.view -- create start_button start_button = display.newrect( 100, 100, 100, 100 ) -- make sure insert button scenegroup scenegroup:insert( start_button ) -- set position of start_button start_button.x=200 start_button.y=150 -- add event listener in "create" stage instead of show state -- start_button in scene_group there no need remove -- touch listener under "destroy" stag start_button:addeventlistener( "touch", ontouchstartbutton ) end -- "scene:show()" function scene:show( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene still off screen (but come on screen). elseif ( phase == "did" ) -- called when scene on screen. -- insert code here make scene come alive. -- example: start timers, begin animation, play audio, etc. end end -- "scene:hide()" function scene:hide( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene on screen (but go off screen). -- insert code here "pause" scene. -- example: stop timers, stop animation, stop audio, etc. elseif ( phase == "did" ) end end -- "scene:destroy()" function scene:destroy( event ) local scenegroup = self.view -- called prior removal of scene's view ("scenegroup"). -- insert code here clean scene. -- example: remove display objects, save state, etc. end -- ------------------------------------------------------------------------------- -- listener setup scene:addeventlistener( "create", scene ) scene:addeventlistener( "show", scene ) scene:addeventlistener( "hide", scene ) scene:addeventlistener( "destroy", scene ) -- ------------------------------------------------------------------------------- return scene
scene2.lua:
local composer = require( "composer" ) local scene = composer.newscene() -- ----------------------------------------------------------------------------------------------------------------- -- code outside of listener functions executed once unless "composer.removescene()" called. -- ----------------------------------------------------------------------------------------------------------------- -- local forward references should go here -- ------------------------------------------------------------------------------- -- "scene:create()" function scene:create( event ) local scenegroup = self.view -- initialize scene here. -- example: add display objects "scenegroup", add touch listeners, etc. end -- "scene:show()" function scene:show( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene still off screen (but come on screen). print("now in scene2.lua!") elseif ( phase == "did" ) -- called when scene on screen. -- insert code here make scene come alive. -- example: start timers, begin animation, play audio, etc. end end -- "scene:hide()" function scene:hide( event ) local scenegroup = self.view local phase = event.phase if ( phase == "will" ) -- called when scene on screen (but go off screen). -- insert code here "pause" scene. -- example: stop timers, stop animation, stop audio, etc. elseif ( phase == "did" ) -- called after scene goes off screen. end end -- "scene:destroy()" function scene:destroy( event ) local scenegroup = self.view -- called prior removal of scene's view ("scenegroup"). -- insert code here clean scene. -- example: remove display objects, save state, etc. end -- ------------------------------------------------------------------------------- -- listener setup scene:addeventlistener( "create", scene ) scene:addeventlistener( "show", scene ) scene:addeventlistener( "hide", scene ) scene:addeventlistener( "destroy", scene ) -- ------------------------------------------------------------------------------- return scene
Comments
Post a Comment