Events Corona SDK-单个对象上的点击和触摸事件,对象旋转
我正在尝试做一个模拟行星绕太阳旋转的应用程序。 我希望当应用程序启动时,行星停止。当我第一次按太阳时,行星开始旋转,当我第二次按太阳时,行星停止转动。 我还想知道,如果我向上挥动,行星开始旋转得更快,而当我向下挥动时,行星的旋转速度会减慢 以下是我所做的:Events Corona SDK-单个对象上的点击和触摸事件,对象旋转,events,lua,rotation,touch,coronasdk,Events,Lua,Rotation,Touch,Coronasdk,我正在尝试做一个模拟行星绕太阳旋转的应用程序。 我希望当应用程序启动时,行星停止。当我第一次按太阳时,行星开始旋转,当我第二次按太阳时,行星停止转动。 我还想知道,如果我向上挥动,行星开始旋转得更快,而当我向下挥动时,行星的旋转速度会减慢 以下是我所做的: -- Sun local sun = display.newImage ( "Sole.png") sun.x = display.contentCenterX sun.y = display.contentCenterY -- First
-- Sun
local sun = display.newImage ( "Sole.png")
sun.x = display.contentCenterX
sun.y = display.contentCenterY
-- First Planet
local group1 = display.newGroup()
p1 = display.newImage("P1(2).png")
group1:insert(p1)
group1.x = sole.x
group1.y = sole.y
p1.x = 270
p1.y = 0
-- Second Planet
local group2 = display.newGroup()
p2 = display.newImage("P2.png")
group2:insert(p2)
group2.x = sole.x
group2.y = sole.y
p2.x = -270
p2.y = 0
local function increaseSpeed(event)
group1.rotation = group1.rotation + 1
group2.rotation = group2.rotation + 1
end
local function decreaseSpeed(event)
group1.rotation = group1.rotation - 1
group2.rotation = group2.rotation - 1
end
-- * State 1: The planets begins to rotate
function state1( event )
print("state1")
sun.enterFrame = increaseSpeed
Runtime:addEventListener("enterFrame", sun)
sun:removeEventListener( "tap", state1 )
timer.performWithDelay( 1, addListener2 )
sun:addEventListener( "touch", swipe)
return true
end
-- * State 2: The planets stops
function state2( event )
print("state2")
sole:removeEventListener( "touch", swipe)
Runtime:addEventListener("enterFrame")
sun:removeEventListener( "tap", state2 )
timer.performWithDelay( 1, addListener1 )
return true
end
function addListener2()
sun:addEventListener( "tap", state2 )
end
function addListener1()
sun:addEventListener( "tap", state1)
end
-- Swipe function
local beginX
local beginY
local endX
local endY
local xDistance
local yDistance
function checkSwipeDirection()
xDistance = math.abs(endX - beginX)
yDistance = math.abs(endY - beginY)
if xDistance > yDistance then
if beginX > endX then
print("swipe left")
else
print("swipe right")
end
else
if beginY > endY then
print("swipe up")
timer.performWithDelay(10, increaseSpeed ,0)
else
print("swipe down")
timer.performWithDelay(10, decreaseSpeed ,0)
end
end
end
function swipe(event)
if event.phase == "began" then
beginX = event.x
beginY = event.y
end
if event.phase == "ended" then
endX = event.x
endY = event.y
checkSwipeDirection();
end
return true
end
我的问题是,如果我在状态1,我向上滑动,按下太阳,我在状态2,但是行星继续旋转,即使我移除事件运行时,enterFrame
有人能帮我吗?
谢谢:)我可以在state2中看到您写道:
Runtime:addEventListener("enterFrame")
你应该写:
Runtime:removeEventListener("enterFrame", sun)
谢谢你的回答!我试着写你写的代码,现在如果我只向上扫一次,一切都正常(行星停止),但是第二次如果我向上扫两次,行星没有停止。无论如何,谢谢你,现在它工作得更好了!鞋底:removeEventListener(“触摸”,滑动)在state2中什么是“鞋底”?也许你不应该删除“sole”的滑动,或者当行星移动时,你必须再次添加事件侦听器。