Я не могу заставить мою анимацию работать правильно с transition.to - PullRequest
0 голосов
/ 30 января 2012

Я относительно новичок в Corona и до сих пор не уверен, понимаю ли я transition.to, поэтому, пожалуйста, потерпите меня и будьте конкретны.У меня есть объект, который «плавает» (гравитация установлена ​​на (0, -4)) на экране.Так что это «динамическое» физическое тело, и оно правильно взаимодействует со всеми другими физическими телами.Слушатели столкновений работают отлично.Однако, когда объект, шар, достигает Y 150, я хочу, чтобы объект переместился в более низкое место на экране через 250 мс.Но когда я запускаю свой код, шарик переходит к случайным точкам на экране и становится непоследовательным.

    local function move(event)

       If (balloon.y <= 150) then
          transition.to(balloon, {time = 250, x = balloon.x, y = 320);
       end
    end


    Runtime:addEventListener("enterFrame", move);

Я читал, что, поскольку слушатель enterFrame вызывается каждые 30-60 мс, переходы, которые принимаютдольше, чем это будет в основном вызывать функцию несколько раз, никогда не позволяя завершить переход.Если это проблема, есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 30 января 2012

Если вы хотите предотвратить повторяющиеся вызовы, установите флаг isInTransition (это произвольно) на balloon и проверьте его статус для каждого вызова.

local function move(event)

    if not balloon.isInTransition then
        if (balloon.y <= 150) then
            transition.to(balloon, {time = 250, x = balloon.x, y = 320)
            balloon.isInTransition=true
        elseif balloon.y == 320 then
            balloon.isInTransition=nil
        end
    end
end

Runtime:addEventListener("enterFrame", move);

Физика плохо работает с переходами, если есть физические взаимодействия (например, столкновение), смешанные с transition.to().

Если вы хотите, чтобы воздушный шар перемещался в более низкое место без столкновений, вы можете попробовать balloon.isSensor=true/false.

Обсуждение здесь о случае, похожем на ваш.

...