transition.to () не работает внутри функции и со слушателем Runtime: addEventListener ("enterFrame", метод) в Corona / Lua - PullRequest
1 голос
/ 25 ноября 2011

Так вот моя проблема.Я работаю над кодом Lua, используя Corona SDK, для приложения для iPhone.Я сузил проблему до нескольких строк кода, которые, если заставить работать, могут указать мне правильное направление для реального кода.(Кроме того, размещение оригинального кода сделает этот пост только длиннее: P).Итак, вот так:

local square = display.newRect( 0, 0, 100, 100 )
square:setFillColor( 255,255,255 )

local function move(event)
    transition.to( self, { time=1500, alpha=0, x=100, y=100 } )
end

Runtime:addEventListener("enterFrame", move)

По сути, проблема в том, что метод transition.to () не работает в функции, которая имеет прослушиватель "enterFrame".Если я изменю слушателя в последней строке на

timer.performWithDelay( )

или даже

Runtime:addEventListener( "touch", method)

, он внезапно сработает.

Я понятия не имею, что мне не хватает.Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 25 ноября 2011

Слушатель enterFrame вызывается средой выполнения Corona каждый раз, когда обновляется экран - вероятно, 30 кадров в секунду. Таким образом, каждые 33 мс вы запускаете анимацию на квадрате, которая занимает 1500 мс. Как только он начинается, вы добавляете еще одну анимацию. И так далее. Это событие следует использовать для обработки анимаций, которыми вы должны управлять напрямую, потому что перемещение или изменения выходят за пределы возможностей функций перехода. Весь смысл использования функций перехода заключается в том, чтобы избежать необходимости такого прямого управления большинством анимаций.

Слушатель touch вызывается только тогда, когда пользователь касается экрана, поэтому вы не получаете повторных вызовов события move. Метод performWithDelay также вызывает событие move только один раз. Вы, вероятно, хотите использовать один из этих подходов.

...