我正在构建一个简单的游戏,玩家可以点击随机移动的球来获得分数。但是,当我测试我的游戏时,我意识到点击功能无法正常工作。当我试图点击移动的球时,有时分数会增加,但有时候没有反应。这是我使用的代码。谢谢你的帮助!
local ball = display.newImage( "ball.png" )
ball.x = math.random(0,w)
ball.y = math.random(0,h)
physics.addBody( ball)
function moveRandomly()
ball:setLinearVelocity(math.random(-50,50), math.random(-50,50));
end
timer.performWithDelay(500, moveRandomly, 0);
ball.rotation = 180
local reverse = 1
local function rotateball()
if ( reverse == 0 ) then
reverse = 1
transition.to( ball, { rotation=math.random(0,360), time=500, transition=easing.inOutCubic } )
else
reverse = 0
transition.to( ball, { rotation=math.random(0,360), time=500, transition=easing.inOutCubic } )
end
end
timer.performWithDelay( 500, rotateball, 0 )
local myText, changeText, score
score = 0
function changeText( event )
score = score + 1
print( score.."taps")
myText.text = "Score:" ..score
return true
end
myText = display.newText( "Score: 0", w, 20, Arial, 15)
myText:setFillColor( 0, 1, 1)
myText:addEventListener( "tap", changeText)
ball:addEventListener("tap", changeText)
答案 0 :(得分:1)
您的代码看起来很好,特别是因为您说它有时会起作用。
我唯一能想到的是,也许你应该使用" touch"事件而不是"点击"事件,因为水龙头不会触发,直到您将手指从屏幕上移开。看到 https://docs.coronalabs.com/guide/events/touchMultitouch/index.html
ball:addEventListener("touch", changeText)
你想要使用"开始"事件的阶段,因此每次触摸只会增加一次得分(当它开始时)。
function changeText( event )
if ( event.phase == "began" ) then
score = score + 1
print( score.."taps")
myText.text = "Score:" ..score
end
return true
end