[NEED HELP] Go To Scene error

Hi everyone,

I’m new to Corona SDK and I’m having troubles switching from Menu to Game scene after putting most of the object code inside the Create Scene function.

Menu scene: 

[lua]

local composer = require( “composer” )

local scene = composer.newScene()


– Code outside of the scene event functions below will only be executed ONCE unless

– the scene is removed entirely (not recycled) via “composer.removeScene()”


local function gotoGame()

    composer.gotoScene( “game”, { time=800} )

end


– Scene event functions


– create()

function scene:create( event )

local sceneGroup = self.view

– Code here runs when the scene is first created but has not yet appeared on screen

local background = display.newImageRect( sceneGroup, “background.png”, 400, 750 )

    background.x = display.contentCenterX

    background.y = display.contentCenterY

local playButton = display.newText( sceneGroup, “Play”, display.contentCenterX, 470, native.systemFont, 44 )

    playButton:setFillColor( 0.2, 0.2, 0 )

playButton:addEventListener( “tap”, gotoGame )

end

– show()

function scene:show( event )

local sceneGroup = self.view

local phase = event.phase

if ( phase == “will” ) then

– Code here runs when the scene is still off screen (but is about to come on screen)

elseif ( phase == “did” ) then

– Code here runs when the scene is entirely on screen

end

end

– hide()

function scene:hide( event )

local sceneGroup = self.view

local phase = event.phase

if ( phase == “will” ) then

– Code here runs when the scene is on screen (but is about to go off screen)

elseif ( phase == “did” ) then

– Code here runs immediately after the scene goes entirely off screen

end

end

– destroy()

function scene:destroy( event )

local sceneGroup = self.view

– Code here runs prior to the removal of scene’s view

end


– Scene event function listeners


scene:addEventListener( “create”, scene )

scene:addEventListener( “show”, scene )

scene:addEventListener( “hide”, scene )

scene:addEventListener( “destroy”, scene )


return scene

[/lua]

Game scene:

[lua]

local composer = require( “composer” )

local scene = composer.newScene()


– Code outside of the scene event functions below will only be executed ONCE unless

– the scene is removed entirely (not recycled) via “composer.removeScene()”


local physics = require( “physics” )

physics.start()

physics.setGravity(0,0)

–background

local background

–bricks / ball / goal

local rect

local rect2

local rect3

local rect4

local rect5

local rect6

local rect7

local rect8

local rect9

local rect10

local rect11

local rect12

local rect13

local rect14

local rect15

local ball

local goal

physics.addBody( ball, “dynamic”, {bounce=0} )

ball.isFixedRotation = true

physics.addBody( goal, “static”, {bounce=0} )

physics.addBody(rect, “static”,{bounce=0})

physics.addBody(rect2, “static”,{bounce=0})

physics.addBody(rect3, “static”,{bounce=0})

physics.addBody(rect4, “static”,{bounce=0})

physics.addBody(rect5, “static”,{bounce=0})

physics.addBody(rect6, “static”,{bounce=0})

physics.addBody(rect7, “static”,{bounce=0})

physics.addBody(rect8, “static”,{bounce=0})

physics.addBody(rect9, “static”,{bounce=0})

physics.addBody(rect10, “static”,{bounce=0})

physics.addBody(rect11, “static”,{bounce=0})

physics.addBody(rect12, “static”,{bounce=0})

physics.addBody(rect13, “static”,{bounce=0})

physics.addBody(rect14, “static”,{bounce=0})

physics.addBody(rect15, “static”,{bounce=0})

local function gotonextlevel()

    composer.gotoScene( “leveltwo”, { time=800} )

end

local function globalTouchHandler(event)

    local swipeLength = math.abs(event.x - event.xStart) 

local swipeHeight = math.abs(event.y - event.yStart) 

    print(event.phase, swipeLength)

print(event.phase, swipeHeight)

    local t = event.target

    local phase = event.phase

    if (phase == “began”) then

    elseif (phase == “moved”) then

    elseif (phase == “ended” or phase == “cancelled”) then

local vx,vy = ball: getLinearVelocity()

if vx+vy~=0 then

–do nothing

        elseif (event.xStart > event.x and swipeLength > 40

and math.abs(event.x - event.xStart) > math.abs(event.y - event.yStart)) then 

            – left

ball:applyForce(-12, 0, ball.x, ball.y)

        elseif (event.xStart < event.x and swipeLength > 40

and math.abs(event.x - event.xStart) > math.abs(event.y - event.yStart)) then

            – right

ball:applyForce(12, 0, ball.x, ball.y)

        elseif (event.y < event.yStart and swipeHeight > 40

and math.abs(event.y - event.yStart) > math.abs(event.x - event.xStart)) then

– up

ball:applyForce(0, -15, ball.x, ball.y)

elseif (event.y > event.yStart and swipeHeight > 40

and math.abs(event.y - event.yStart) > math.abs(event.x - event.xStart)) then

– down    

ball:applyForce(0, 15, ball.x, ball.y)

        end

    end

ball:applyTorque(0)

end

local function onCollision( event )

    if ( event.phase == “began” ) then

        local obj1 = event.object1

        local obj2 = event.object2

        if ( ( obj1.myName == “rect” and obj2.myName == “ball” ) or

( obj1.myName == “rect2” and obj2.myName == “ball” ) or

( obj1.myName == “rect3” and obj2.myName == “ball” ) or

( obj1.myName == “rect4” and obj2.myName == “ball” ) or

( obj1.myName == “rect5” and obj2.myName == “ball” ) or

( obj1.myName == “rect6” and obj2.myName == “ball” ) or

( obj1.myName == “rect7” and obj2.myName == “ball” ) or

( obj1.myName == “rect8” and obj2.myName == “ball” ) or

( obj1.myName == “rect9” and obj2.myName == “ball” ) or

( obj1.myName == “rect10” and obj2.myName == “ball” ) or

( obj1.myName == “rect11” and obj2.myName == “ball” ) or

( obj1.myName == “rect12” and obj2.myName == “ball” ) or

( obj1.myName == “rect13” and obj2.myName == “ball” ) or

( obj1.myName == “rect14” and obj2.myName == “ball” ) or

( obj1.myName == “rect15” and obj2.myName == “ball” ) )

        then

            – Set force to zero

ball:setLinearVelocity(0,0)

ball:applyForce(0,0)

–ball:applyTorque(0,0)

–ball.rotation = 0

–ball.angularVelocity = 0

        elseif ( obj1.myName == “ball” and obj2.myName == “goal” ) 

        then

            --go to next level

gotonextlevel()

        end

    end

end

local function checkball()

if (ball.x > display.contentWidth or

ball.x < 0 or

ball.y > display.contentHeight or

ball.y < 0)

then

ball.x = 135

ball.y = 400

ball:setLinearVelocity(0,0)

ball:applyForce(0,0)

ball:applyTorque(0,0)

ball.rotation = 0

ball.angularVelocity = 0

end 

end

Runtime:addEventListener(“touch”,globalTouchHandler)

Runtime:addEventListener(“enterFrame”, checkball)


– Scene event functions


– create()

function scene:create( event )

local sceneGroup = self.view

background = display.setDefault( “background”, 0.894, 0.945, 0.996 )

sceneGroup: insert(background)

rect = display.newRoundedRect(300,400,30,30,4)

rect:setFillColor( 0.45 )

sceneGroup: insert(rect)

rect2 = display.newRoundedRect(300,50,30,30,4)

rect2:setFillColor( 0.45 )

sceneGroup: insert(rect2)

rect3 = display.newRoundedRect(270,80,30,30,4)

rect3:setFillColor( 0.45 )

sceneGroup: insert(rect3)

rect4 = display.newRoundedRect(45,80,30,30,4)

rect4:setFillColor( 0.45 )

sceneGroup: insert(rect4)

rect5 = display.newRoundedRect(75,310,30,30,4)

rect5:setFillColor( 0.45 )

sceneGroup: insert(rect5)

rect6 = display.newRoundedRect(75,20,30,30,4)

rect6:setFillColor( 0.45 )

sceneGroup: insert(rect6)

rect7 = display.newRoundedRect(135,20,30,30,4)

rect7:setFillColor( 0.45 )

sceneGroup: insert(rect7)

rect8 = display.newRoundedRect(135,460,30,30,4)

rect8:setFillColor( 0.45 )

sceneGroup: insert(rect8)

rect9 = display.newRoundedRect(45,430,30,30,4)

rect9:setFillColor( 0.45 )

sceneGroup: insert(rect9)

rect10 = display.newRoundedRect(15,400,30,30,4)

rect10:setFillColor( 0.45 )

sceneGroup: insert(rect10)

rect11 = display.newRoundedRect(240,220,30,30,4)

rect11:setFillColor( 0.45 )

sceneGroup: insert(rect11)

rect12 = display.newRoundedRect(270,340,30,30,4)

rect12:setFillColor( 0.45 )

sceneGroup: insert(rect12)

rect13 = display.newRoundedRect(135,190,30,30,4)

rect13:setFillColor( 0.45 )

sceneGroup: insert(rect13)

rect14 = display.newRoundedRect(300,110,30,30,4)

rect14:setFillColor( 0.45 )

sceneGroup: insert(rect14)

rect15 = display.newRoundedRect(15,370,30,30,4)

rect15:setFillColor( 0.45 )

sceneGroup: insert(rect15)

ball = display.newCircle(135,400,14)

ball:setFillColor( 0.3,0.4,1 )

sceneGroup: insert(ball)

goal = display.newCircle(75,250,10.5)

goal:setFillColor( 0.9,0.8,0 )

sceneGroup: insert(goal)

end

– show()

function scene:show( event )

local sceneGroup = self.view

local phase = event.phase

if ( phase == “will” ) then

– Code here runs when the scene is still off screen (but is about to come on screen)

elseif ( phase == “did” ) then

– Code here runs when the scene is entirely on screen

end

end

– hide()

function scene:hide( event )

local sceneGroup = self.view

local phase = event.phase

if ( phase == “will” ) then

– Code here runs when the scene is on screen (but is about to go off screen)

elseif ( phase == “did” ) then

– Code here runs immediately after the scene goes entirely off screen

end

end

– destroy()

function scene:destroy( event )

local sceneGroup = self.view

– Code here runs prior to the removal of scene’s view

end


– Scene event function listeners


scene:addEventListener( “create”, scene )

scene:addEventListener( “show”, scene )

scene:addEventListener( “hide”, scene )

scene:addEventListener( “destroy”, scene )


return scene

[/lua]

Previously the game was running as expected when I was creating all the object outside of the create scene function. Now instead I’m getting the following error:

ERROR: table expected. If this is a function call, you might have used ‘.’ instead of ‘:’
Stack traceback:
In function ‘error’
in function ‘gotoScene’

menu.lua:12: in function ‘?’

?: in function <?:190>

Any help is much appreciated

simplify your project until you get no errors - then you will find the error 

simplify your project until you get no errors - then you will find the error