尝试索引全局'矩形'(零值)错误

时间:2013-09-16 11:17:00

标签: lua corona

我是Corona的新手,我正在尝试按照本教程使用触摸在屏幕上拖动对象。

http://thatssopanda.com/corona-sdk-tutorials/dragging-an-object-in-corona-sdk/

我使用了几乎完全相同的代码,我的变量只有一个不同的名称,而是一个矩形而不是一个圆圈,但我不断收到上述错误。

有什么想法吗?错误:

(文件:/Users/paulbyrne/Desktop/Transition/main.lua 行:6

尝试索引全局'矩形'(零值)

堆栈追溯:     [C]: ?     /Users/paulbyrne/Desktop/Transition/main.lua:6:在主要块中)

    local rectangleShape = display.newRect( 100, 100, 100, 100 )
    rectangleShape:setFillColor( 255, 255, 255 )

    function rectangle:touch( event)
        if event.phase == "began" then
            display.getCurrentStage():setFocus( self, event.id)
            self.isFocus = true

            self.markX = self.x
            self.markY = self.y

        elseif self.isFocus then

            if event.phase == "moved" then
                self.x = event.x - event.xStart + self.markX
                self.y = event.y - event.yStart + self.markX
            elseif event.phase == "ended" or event.phase == "cancelled" then
                display.getCurrentStage():setFocus( self, nil )
                self.isFocus = false
            end

        end 

        return true
    end
    rectangleShape:addEventListener( "touch", rectangle )   

1 个答案:

答案 0 :(得分:2)

你写的内容相当于:

rectangle.touch = function (self, event)
    ...
end

如果矩形为零,那么这将失败,因为您实际上索引为nil。 我个人更喜欢避免使用':'来编写函数定义,因为它模糊了你实际做的事情,以及输入参数(自我隐藏)。