此代码用于为大炮射击创建函数侦听器。当我运行代码时,它给了我一个错误Question1.lua:43'('预计在'='
附近function cannonCharge = function(event)
if(event.phase == 'began') then
impulse = 0
cannon.isVisible = true
Runtime:addEventListener('enterFrame', charge)
print ('cannonCharge')
end
end
function shot = function(event)
if(event.phase == 'ended') then
Runtime:removeEventListener('enterFrame', charge)
cannon.isVisible = true
cannon.rotation = 0
cannonBall = display.newImage('cannon ball.png', 84, 220)
physics.addBody(cannonBall, {density = 1, friction = 0, bounce = 0})
cannonBalls:insert(cannonBall)
print ('shot')
-- Shoot cannon ball
cannonBall:applyLinearImpulse(3, impulse, cannonBall.x, cannonBall.y )
--Collision listener
cannonBall:addEventListener ('collision', ballCollision)
end
end
function scene:createScene(event)
...
我将听众添加到了EnterScene
function scene:enterScene( event )
local group = self.view
background:addEventListener('touch', cannonCharge)
background:addEventListener('touch', shot)
end
答案 0 :(得分:2)
变量没有类型;只有价值观。所以,而不是
function shot = function(event)
-- ...
end
尝试
local shot = function(event)
-- ...
end
如果你没有放local
,那么变量将是全局变量。应尽量减少全局变量的使用。
如果您更喜欢更结构化的语法,可以使用:
local function shot(event)
-- ...
end
这相当于:
local shot
shot = function(event)
-- ...
end
答案 1 :(得分:0)
您无法在同一对象上分配两个触控侦听器。因为它首先要调用哪个函数会产生冲突。 而不是那样,你需要指定一个触摸和一个点击监听器。所以没有冲突。 background:addEventListener('tap',cannonCharge) background:addEventListener('touch',shot)