【问题标题】:Corona SDK saying attempt to call method 'removeSelf()' (a nil value)Corona SDK 说尝试调用方法“removeSelf()”(零值)
【发布时间】:2016-10-26 11:42:00
【问题描述】:

好的,我的问题是 Corona SDK 给了我错误,当我在一段时间后尝试移除爆炸对象时,尝试调用方法“removeSelf()”(一个 nil 值)。我尝试了许多不同的解决方案,但都没有奏效。我是 Corona SDK 的新手,所以我需要帮助。这是有问题的代码:

    local function addExplosion(x, y)
                local explosion = display.newImage("Explosion.png", x, y)
        physics.addBody(explosion, "static")

        timer.performWithDelay(1000, function(self)
            self:removeSelf()
        end, 1)
    end

    local function onCollision(event)
        if (event.phase == "began") then
            if(event.object1.hasCollided == false and         event.object2.hasCollided == false and event.object1.y > 50) then
                local explosionSound = audio.loadSound("Explosion.ogg")
                local explosionChannel = audio.play(explosionSound)

                local collisionX = (event.object1.x + event.object2.x) * 0.5
                local collisionY = (event.object1.y + event.object2.y) * 0.5

                event.object1.hasCollided = true
                event.object2.hasCollided = true

                event.object1:removeSelf()
                event.object2:removeSelf()

                addExplosion(collisionX, collisionY)

                score = score - 5
                scoreText.text = score
            end
        end
    end

    local function addBomb()
        local startX = math.random(display.contentWidth * 0.1, display.contentWidth * 0.9)

        local bomb = display.newImage("bomb.png", startX, -10)
        physics.addBody(bomb, "dynamic")
        bomb.hasCollided = false
        Runtime:addEventListener("enterFrame", bomb)
        bomb:addEventListener("touch", bombTouched)
    end

    local function addBalloon()
        local startX = math.random(display.contentWidth * 0.1, display.contentWidth * 0.9)

        local balloon = display.newImage("red_balloon.png", startX,         display.contentHeight + 50)
        physics.addBody(balloon, "dynamic")
        balloon.gravityScale = -0.5
        balloon.enterFrame = offscreen
        balloon.hasCollided = false 
        Runtime:addEventListener("enterFrame", balloon)
        Runtime:addEventListener("collision", onCollision)
    end

【问题讨论】:

    标签: android lua coronasdk


    【解决方案1】:

    你不能调用 self:removeSelf() 因为它是 nil。 我想你宁愿移除你的爆炸物体?

    local function addExplosion(x, y)
                    local explosion = display.newImage("Explosion.png", x, y)
            physics.addBody(explosion, "static")
    
            timer.performWithDelay(1000, function(self)
                self:removeSelf()
            end, 1)
        end
    

    想想自己在这个位置是什么(打印它以获得更多信息)

    【讨论】:

    • 谢谢!我将 self.removeSelf() 更改为 explode.removeSelf()
    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 2021-06-07
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多