removeSelf() 一个空值错误

有人能告诉我这是什么原因导致的错误吗?尝试索引全局变量 'backC'(一个空值)

点赞
用户1605727
用户1605727

backC可能已被移除,因为有**Runtime:addEventListener("enterFrame", cleanup)**。

enterFrame会反复调用cleanup()函数,所以在移除backC之后必须移除enterFrame,如果要创建多个对象,只需将其限制在函数内部,因为它可能会引起引用问题。

像这样:

local randomBackC = function()
    local backC = display.newImage("Cloud"..tostring(math.random(1, 4))..".png")
    backC.x = math.random (30, 450); backC.y = -20
    physics.addBody( backC, { density=2.9, friction=0.5, bounce=0.7, radius=24 } )

    local cleanup
    cleanup = function()
       if backC then
           if backC.y >100 then
               backC:removeSelf()
               backC = nil
               Runtime:removeEventListener("enterFrame", cleanup)
           end
       end
    end
    Runtime:addEventListener("enterFrame", cleanup)
end
timer.performWithDelay( 500, randomBackC, 0 )
2013-07-05 17:34:42