ZJ Games
ZJ Games

Reputation: 25

Coronasdk Issue with addeventListeners

recently I was coding a new game when I ran across a problem of which I cannot seem to be able to fix.

This is the code :

    function newPower() 
rand = math.random( 100 )

if (rand < 80) then
    powerup = display.newImage("power.png");
    powerup.class = "powerup"
    powerup.x = 60 + math.random( 160 )
    powerup.y = -100
    physics.addBody( powerup, { density=0.9, friction=0.3, bounce=0.3} )
    powerup:addEventListener( "touch", handlePowerTouch )
    end
    end
    local function handlePowerTouch( event )
    if event.phase == "began" then
    currentScore = currentScore * 2
    currentScoreDisplay.text = string.format( "%06d", currentScore )
    event.target:removeSelf()
    return true
    end
    end
    local function spawnpowers()
    -- Spawn a new powerup every second until canceled.
    spawnPower = timer.performWithDelay( 1000, newPower, -1 )
    end

Any help fixing this issue would be greatly appreciated! The issue I'm having is when I click "run" or "play" the game starts working then crashes and displays this message:

addEventListener: listener cannot be nil: nil stack traceback: ?: in function 'addeventListener' game.lua63: in function'_listener' <-- i have given you game.lua:63 above.

Thanks

Upvotes: 1

Views: 37

Answers (1)

Piglet
Piglet

Reputation: 28974

powerup:addEventListener( "touch", handlePowerTouch )

Here handlePowerTouch is nil as the function definition follows after this line.

Move your function definition in front of that line, then it should work.

Btw, is there any reason why you have so many global variables? You should use local variables wherever possible.

Upvotes: 1

Related Questions