Storyboard Event Listeners

Hi, I am learning the corona sdk and I see you are quite good at it.
When I did a tutorial that had touch events:[lua]function button:tap( event )
textObject:setTextColor( 255, 255, 255 )
end

button:addEventListener( “tap”, button )[/lua]

But when I try and use this same thing with the storyboard api:[lua]function button:tap( event )
storyboard.gotoScene( “Play” )
end

button:addEventListener( “tap”, button )[/lua]

But I get this error:
http://dl.dropbox.com/u/44503953/Pics/Helpme.png

Please help me!
[import]uid: 123066 topic_id: 22529 reply_id: 322529[/import]

Can you try redoing that function (the one from the screenshot) like this;

[lua]local function tapCornered (event)
–event stuff here
end
Cornered:addEventListener(“tap”, tapCornered)[/lua]

Let me know if that makes a difference :slight_smile: [import]uid: 52491 topic_id: 22529 reply_id: 89816[/import]

I tried that but I still got an error:
http://dl.dropbox.com/u/44503953/Pics/Helpme2.png [import]uid: 123066 topic_id: 22529 reply_id: 89830[/import]

Have you got;
[lua]local Cornered[/lua] at the top of the file (as in storyboard sample code) ?

More code would help here. [import]uid: 52491 topic_id: 22529 reply_id: 89842[/import]

Here is my full code (I am working of the storyboard template as I am still learning):[lua]--------------------------------------------------------------------------

– Menu.lua


local storyboard = require( “storyboard” )
local scene = storyboard.newScene()



– NOTE:

– Code outside of listener functions (below) will only be executed once,
– unless storyboard.removeScene() is called.



– BEGINNING OF YOUR IMPLEMENTATION

– Called when the scene’s view does not exist:
function scene:createScene( event )
local group = self.view

local background = display.newImage( “mainBackground.png” )
background.x = display.contentWidth - 240
background.y = display.contentHeight - 160
background:scale(1,1)

local menubackground = display.newImage( “menuBackground.png” )
menubackground.x = display.contentWidth - 240
menubackground.y = display.contentHeight - 160
menubackground:scale(0.50,0.50)

local Cornered = display.newImageRect( “Cornered.png”, 250, 75 )
Cornered.x = display.contentWidth - 370
Cornered.y = display.contentHeight - 150

local Invasion = display.newImageRect( “Invasion.png”, 250, 75 )
Invasion.x = display.contentWidth - 110
Invasion.y = display.contentHeight - 150

local HighScore = display.newImageRect( “highscore.png”, 250, 75 )
HighScore.x = display.contentWidth - 370
HighScore.y = display.contentHeight - 70

local Help = display.newImageRect( “Help.png”, 250, 75 )
Help.x = display.contentWidth - 110
Help.y = display.contentHeight - 70

group:insert(background)
group:insert(menubackground)
group:insert(Cornered)
group:insert(Invasion)
group:insert(HighScore)
group:insert(Help)


– CREATE display objects and add them to ‘group’ here.
– Example use-case: Restore ‘group’ from previously saved state.

end
– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
– INSERT code here (e.g. start timers, load audio, start listeners, etc.)
local function tapCornered( event )
storyboard.gotoScene( “Play” )
print( “Cornered Button Tapped” )
end

Cornered:addEventListener( “tap”, tapCornered )
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 listeners, unload sounds, etc.)

end
– Called prior to the removal of scene’s “view” (display group)
function scene:destroyScene( event )
local group = self.view


– INSERT code here (e.g. remove listeners, widgets, save state, 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 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 [import]uid: 123066 topic_id: 22529 reply_id: 89968[/import]

Hi, your error is a “scope” issue.

The function you are attempting to access your “Cornered” variable from can’t see it

The way you get around this is by declaring the variable outside of a function.

Here is a fixed code, based on your sample :

[code]


– Menu.lua


local storyboard = require( “storyboard” )
local scene = storyboard.newScene()



– NOTE:

– Code outside of listener functions (below) will only be executed once,
– unless storyboard.removeScene() is called.



– BEGINNING OF YOUR IMPLEMENTATION

–Declare corner variable here so all functions can see it
local Cornered

– Called when the scene’s view does not exist:
function scene:createScene( event )
local group = self.view

local background = display.newImage( “mainBackground.png” )
background.x = display.contentWidth - 240
background.y = display.contentHeight - 160
background:scale(1,1)

local menubackground = display.newImage( “menuBackground.png” )
menubackground.x = display.contentWidth - 240
menubackground.y = display.contentHeight - 160
menubackground:scale(0.50,0.50)

–Assign Cornered here
Cornered = display.newImageRect( “Cornered.png”, 250, 75 )
Cornered.x = display.contentWidth - 370
Cornered.y = display.contentHeight - 150

local Invasion = display.newImageRect( “Invasion.png”, 250, 75 )
Invasion.x = display.contentWidth - 110
Invasion.y = display.contentHeight - 150

local HighScore = display.newImageRect( “highscore.png”, 250, 75 )
HighScore.x = display.contentWidth - 370
HighScore.y = display.contentHeight - 70

local Help = display.newImageRect( “Help.png”, 250, 75 )
Help.x = display.contentWidth - 110
Help.y = display.contentHeight - 70

group:insert(background)
group:insert(menubackground)
group:insert(Cornered)
group:insert(Invasion)
group:insert(HighScore)
group:insert(Help)


– CREATE display objects and add them to ‘group’ here.
– Example use-case: Restore ‘group’ from previously saved state.

end

– Called immediately after scene has moved onscreen:
function scene:enterScene( event )
local group = self.view
– INSERT code here (e.g. start timers, load audio, start listeners, etc.)
local function tapCornered( event )
storyboard.gotoScene( “Play” )
print( “Cornered Button Tapped” )
end

Cornered:addEventListener( “tap”, tapCornered )
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 listeners, unload sounds, etc.)

end

– Called prior to the removal of scene’s “view” (display group)
function scene:destroyScene( event )
local group = self.view


– INSERT code here (e.g. remove listeners, widgets, save state, 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 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 [import]uid: 84637 topic_id: 22529 reply_id: 90039[/import]

thank you ? [import]uid: 123066 topic_id: 22529 reply_id: 90085[/import]

Ok 1 more problem, When I try and make a back button in the cornered play.lua It prints out “Back Button Tapped” But does not go to the scene [import]uid: 123066 topic_id: 22529 reply_id: 90133[/import]