尝试索引全局变量'rectangle'(一个空值),出错。

我是新手,正在尝试使用触摸跟踪教程将对象在屏幕上拖动。 http://thatssopanda.com/corona-sdk-tutorials/dragging-an-object-in-corona-sdk/

我几乎使用了完全相同的代码,仅仅是变量名有所不同,以及用矩形代替圆形,但是我一直得到上述错误。

任何想法? 错误:

(文件:/用户/ paulbyrne /桌面/转换/main.lua 行:6

尝试索引全局'rectangle'(空值) 堆栈跟踪: [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 )

`` `

点赞
用户513763
用户513763

如果 rectangle 是空,则会失败,因为您实际上正在对空值进行索引。

个人认为最好避免使用“:”编写函数定义,因为它会模糊化您实际所用的方法以及输入参数(self 被隐藏)。

2013-09-16 11:38:04