我正在创建一个游戏,在第1级我想加载一些代表字母的图像,我想为它们添加功能。其中之一就是能够移动它们。
所以在我的enterScene里面是
function scene:enterScene(event)
...
letA = display.newImage("media/letters/A.png", display.contentWidth/4 - 20, display.contentHeight/5 - 18)
letC = display.newImage("media/letters/C.png", display.contentWidth/4 + 35, display.contentHeight/5 - 18)
letR= display.newImage("media/letters/R.png", display.contentWidth/4 + 90, display.contentHeight/5 - 18)
letE=display.newImage("media/letters/E.png", display.contentWidth/4 + 145, display.contentHeight/5 - 18)
screenGroup:insert(letA)
screenGroup:insert(letC)
screenGroup:insert(letR)
screenGroup:insert(letE)
letA:addEventListener("touch", letA)
letC:addEventListener("touch", letC)
letR:addEventListener("touch", letR)
letE:addEventListener("touch", letE)
现在我添加了letA的移动功能,即
function letA: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.markY
elseif event.phase=="ended" or event.phase == "cancelled" then
display.getCurrentStage():setFocus(self,nil)
self.isFocus = false
end
end
return true
end
然后,当我试图进入场景时,它给我一个错误的函数线letA:touch(事件),它说“尝试索引全局'letA'。
那我该怎么办?我设计的就是这样,因为当用户点击Play时我想要它,它会加载字母,如果他按下它,它会从屏幕上卸载它们。
答案 0 :(得分:1)
您可以这样做,通过“:”(冒号)声明触摸功能,其中letA或其他对象不是表格。
local letA = display.newImage("media/letters/A.png", display.contentWidth/4 - 20, display.contentHeight/5 - 18)
letA.touch = function(self,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.markY
elseif event.phase=="ended" or event.phase == "cancelled" then
display.getCurrentStage():setFocus(self,nil)
self.isFocus = false
end
end
return true
end
letA:addEventListener("touch")