2015-04-02 1 views
0

Итак, я использую корону, и я пытаюсь создать игру с кругом, который становится все больше и меньше, пока его не щелкнут, когда он перестанет расширяться, и появится новый круг, который затем начинает расширяться также. Точка игры должна соответствовать как можно большему количеству кругов внутри друг друга. Моя проблема в том, что я смог создать бесконечный цикл, чтобы круг становился все больше и меньше навсегда, но теперь я пытаюсь сделать так, чтобы при его нажатии он останавливался. Я пробовал поместить его в цикл, и, хотя количество кликов - это одно, оно будет продолжаться, а затем, когда его два будут остановлены, но не будут работать. Можете ли вы помочь?Создание круга растягивается до щелчка

Вот код, который у меня есть сейчас, и ничего не происходит, за исключением небольшого круга.

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 

ответ

1

Лучший способ достичь этого - сделать 2 изменения в вашем коде.

Прежде всего, давайте вернемся к вашей бесконечной петле. Мы можем добиться такого же эффекта, используя режим повторения перехода.

Затем мы просто добавляем тэг к вашему переходу, поэтому вы можете легко отменить свой переход, вызвав переход.cancel («тэг»).

Вот как ваш код будет:

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) 
+0

Awesome! Спасибо! – dandy012

+0

Знаете ли вы, как я сделал бы утверждение if, которое закончит все, если щелкнул круг, больше, чем предыдущий круг? – dandy012

+0

hummm. Вероятно, добавив слушателя «enterFrame», который сохраняет текущий размер круга и сохраняет предыдущий размер круга, а затем в «tap» listener, я бы проверил эти значения (текущий размер круга x предыдущего размера круга) и затем отменил переход (если случай) – rsc