【问题标题】:Coronasdk Issue with addeventListenersaddeventListeners 的 Coronasdk 问题
【发布时间】:2016-06-22 23:17:50
【问题描述】:

最近我在编写一个新游戏时遇到了一个我似乎无法解决的问题。

这是代码:

    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

任何解决此问题的帮助将不胜感激! 我遇到的问题是,当我单击“运行”或“玩”时,游戏开始运行,然后崩溃并显示以下消息:

addEventListener:监听器不能为 nil:nil 堆栈回溯: ?: 在函数“addeventListener”中 game.lua63: in function'_listener'

谢谢

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:
    powerup:addEventListener( "touch", handlePowerTouch )
    

    这里的handlePowerTouch是nil,因为函数定义在这行之后。

    将您的函数定义移到该行前面,然后它应该可以工作。

    顺便说一句,你有这么多全局变量有什么原因吗?您应该尽可能使用局部变量。

    【讨论】:

    • 非常感谢,我已经尝试修复该问题 2 天了,不,所有全局变量都没有任何原因,我只是修复了它。我需要的唯一全局变量是“HandlePowerTouch”。谢谢您的帮助。我对电晕很陌生,所以感谢您帮助我。
    • local 也适用于 handlePowerTouch,只要您只需要在 newPower 范围内使用它即可。仅确保在您必须使用它之前对其进行定义。错误消息告诉您出了什么问题。你只需要找出为什么某些东西是 nil 并修复它。非常直截了当。
    猜你喜欢
    • 2012-12-24
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2020-12-15
    • 2017-09-13
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多