Hello everyone I’ve been having problem with removing Runtime event listener. It is to my understanding that in order to remove a Runtime event listener you must remove it within the function it’s calling. So that is exactly what I did. But the problem is, it’s not removing the listener.
Here’s my code
[lua]
local storyboard = require"storyboard"
local widget = require"widget"
local scene = storyboard.newScene()
local screenGroup
local button
local _W = display.contentWidth
local _H = display.contentHeight
globalVar = 0
local function nextScene(event)
storyboard.gotoScene(“scene1”, “fade”, 100)
globalVar = 1
end
local function printFrameContent()
if globalVar == 0 then
print(“Scene 2”)
elseif globalVar == 1 then
print(“Remove listener”)
Runtime:addEventListener(“enterFrame”, printFrameContent) – Here is the remove listener
end
end
function scene:createScene( event )
screenGroup = self.view;
button = widget.newButton{
width = 120,
height = 120,
label = “Scene 1”,
onRelease = nextScene
}
button.x = _W /2; button.y = _H / 2;
screenGroup:insert(button)
end
function scene:enterScene( event )
local prev = storyboard.getPrevious()
if(prev ~= nil) then
storyboard.removeScene(prev)
end
Runtime:addEventListener(“enterFrame”, printFrameContent) – Here is the listener declaration.
end
function scene:exitScene( event )
scene:removeEventListener( “createScene”, scene )
scene:removeEventListener( “enterScene”, scene )
scene:removeEventListener( “exitScene”, scene )
scene:removeEventListener( “destroyScene”, scene )
end
function scene:destroyScene( event )
end
scene:addEventListener( “createScene”, scene )
scene:addEventListener( “enterScene”, scene )
scene:addEventListener( “exitScene”, scene )
scene:addEventListener( “destroyScene”, scene )
return scene
[/lua]
As you can see I place a print just to see if the listener has been removed. But it is still printing even after decliaring the remove listener.