所以我正在使用电晕,我正在尝试制作一个游戏,其圆圈越来越小,直到它点击它停止扩张,然后出现一个新的圆圈,然后开始扩张。游戏的目的是让尽可能多的圈子彼此适合。我的问题是我已经能够制作一个无限循环,以便圆圈永远变得越来越小,但现在我正试图让它变成当它点击它停止时。我已经尝试将它放在一个循环中,而点击次数是一次,然后当它的两次它将停止但它不起作用。你们能帮忙吗?
这是我现在拥有的代码,除了出现一个小圆圈外没有任何反应。
circa = display.newCircle(display.contentWidth/2, display.contentHeight/2, 20)
circa:setFillColor(noFillColor)
circa.strokeWidth=5
circa:setStrokeColor(1,0,0)
local function numberOfCircles ( event )
if (event.numTaps==1) then
x=1
elseif (event.numTaps==2) then
x=2
end
end
Runtime:addEventListener("enterFrame" , numberOfCircles)
while x==1 do
i = i + 1
local function startCircle(event)
resize = circa.path
circa.scale=transition.to( resize, {radius = 300, time=1000, x= event.x, y=event.y})
end
local function endCircle( event )
reresize = circa.path
circa.scale = transition.to( resize, {radius = 20, time=1000, x= event.x, y = event.y})
end
timer.performWithDelay(1000*i, startCircle)
timer.performWithDelay(2000*i+1,endCircle)
end
if x == 2 then
circa.setLinearVelocity(0, 0)
end
答案 0 :(得分:1)
实现这一目标的最佳方法是在代码中进行2次更改。
首先,让我们驾驭你的无限循环。我们可以通过使用转换重复模式来实现相同的效果。
然后,我们只为您的转换添加一个标记,以便您可以通过调用transition.cancel(“tagname”)轻松取消转换。
以下是您的代码:
circa = display.newCircle(display.contentWidth/2, display.contentHeight/2, 20)
circa:setFillColor(noFillColor)
circa.strokeWidth=5
circa:setStrokeColor(1,0,0)
local scaleFactor = 300/20
transition.to(circa, {xScale=scaleFactor, yScale=scaleFactor, time=1500, transition= easing.continuousLoop,iterations=-1, tag="myTransition"})
local function onBackgroundTap(e)
print("user clicked on background. Let's stop transition")
transition.cancel("myTransition")
end
Runtime:addEventListener("tap", onBackgroundTap)