尝试索引全局“对象”(零值)

时间:2015-08-04 22:16:41

标签: lua sdk null corona

所以这是我得到的错误:

Game.lua:66: attempt to index global 'Spears' (a nil value)
stack traceback:
                         Game.lua:66: in function '_listener'

这是一些代码,显示错误发生的位置:

    local Spears = {} 
    local SpearsTimer 
    local SpearsCounter = 1


    local delayTimer
    local removeListeners




end
end




local field = display.newCircle( 0, 0, 0 ) ; field.alpha = 0.3
field.name = "field"
field.x = display.contentCenterX ; field.y = display.contentCenterY
physics.addBody( field, "static", { isSensor=true, radius=320 } )






    local spawnSpears = function() 
        local Fall = math.random(display.contentWidth * -0.2, display.contentWidth * 1.2) 
        Spears[SpearsCounter] = display.newImageRect( "Spear.png", 15, 50 ) 
        Spears[SpearsCounter].x = Fall 
        Spears[SpearsCounter].y = -200  
        physics.addBody( Spears[SpearsCounter], "dynamic", {bounce = 0} ) 
        --Spears[SpearsCounter].collision = onCollision 
        --Spears[SpearsCounter]:addEventListener( "collision", Spears[SpearsCounter] ) 
        transition.to( Spears[SpearsCounter], { rotation = Spears[SpearsCounter].rotation+720, time=15000, onComplete=spinImage } ) 
        Spears[SpearsCounter].gravityScale = 0.5 
        sceneGroup:insert(Spears[SpearsCounter])
        group:insert(Spears[SpearsCounter])
        SpearsCounter = SpearsCounter + 1
    end 


   SpearsTimer = timer.performWithDelay( 5000, spawnSpears, -1 )
The Error points to line 66, which is this line of code:

        Spears[SpearsCounter] = display.newImageRect( "Spear.png", 15, 50 ) 

那么我做错了什么?

哦,请记住,我正在尝试让对象在整个屏幕中随机生成并掉落/移动到屏幕中心。我把Radial Gravity。

2 个答案:

答案 0 :(得分:0)

问题是你已经宣布了

    local Spears = {}

在该功能之外无法访问的功能中。尝试在函数和访问之外声明它。了解变量的范围。

答案 1 :(得分:-1)

这很可能是范围问题。本教程将指导您了解范围:

debuggex.com is a great resource for visualizing these sorts of things