Создать пользовательский переход в Corona SDK - PullRequest
1 голос
/ 09 декабря 2011

Я просмотрел документы и ничего не смог найти. Можно ли создать собственный переход? Я должен смоделировать бросок с пользовательским ослаблением и т. Д. В cocos2d я смог просто создать собственное действие, с короной я озадачен.

Ответы [ 2 ]

1 голос
/ 04 августа 2014

В документах ничего не сказано по теме. Однако, если вы попробуете, вы обнаружите, что пользовательская функция замедления принимает четыре параметра (только nil от пятого параметра и выше). Некоторая тренировка показывает, что пользовательская функция замедления выглядит так:

function easer(currentTime, duration, startValue, targetDelta)
    ...
end

Объяснение

  • currentTime / duration: duration говорит само за себя, а currentTime просто [0..duration] в ходе перехода.
  • startValue: снимок значения в начале перехода.
  • targetDelta: Это значение целевого значения, минус startValue, т.е. расстояние, которое должна пройти функция замедления

Аннотированный пример

Скажем, у вас есть следующий код:

foo.frob = 1
transition.to(foo, {time=1001, frob=0.25})

То есть, вы хотите переход foo.frob из [1..0.25]. Тогда:

function easer(currentTime, duration, startValue, targetDelta)
    -- currentTime:  [0..1001]
    -- duration:     1001
    -- startValue:   1
    -- targetDelta:  to-from = 0.25-1 = -0.75

    return startValue + (currentTime/duration) * targetDelta -- a linear interpolator
end

Возвращаемое значение

Возвращаемое значение должно быть startValue в начале и startValue+targetDelta в конце. Вполне разрешено покидать этот диапазон; однако, как только переход останавливается, он автоматически становится startValue+targetDelta, поэтому сделайте его startValue и startValue+targetDelta в начале и конце.

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

0 голосов
/ 10 декабря 2011

Хорошо, ответ в документах.

Один из параметров для transition.to - замедление, которое может быть пользовательской функцией.

...