У меня проблема с синхронизацией. Мне нужно, чтобы grape MovieClip до последнего кадра внутри, например, 10 секунд, а затем изменил анимацию, но onComplete срабатывает, после того, как виноград MC достиг 11-го кадра! Есть ли параметр onTimeOut или что-то еще? Я искал везде, пробовал много обходных решений, но ничего не работало отлично, оно либо заканчивает всю анимацию до истечения таймера, либо наоборот.TweenMax frame & onComplete issue
private function changeAnimation():void
{
if (currentGrapeNumber > 0)
{
TweenMax.killTweensOf(grapes["Grape" + currentGrapeNumber]);
if (currentGrapeNumber == 30)
{
return;
}
}
currentGrapeNumber++;
currentAnimation = TweenMax.to(grapes["Grape" + currentGrapeNumber], minutesPerGrape * 60, { frame:11, onComplete:changeAnimation });
}
EDIT 1: существует переменная currentAnimation, поскольку пользователь может нажать кнопку паузы. Я пытаюсь использовать собственный pausable timer class как обходной путь сейчас, но все же надеюсь, что есть способ, не используя таймеры.
EDIT 2: используется таймер, так как приложение имеет обратный отсчет.
Я не вижу, как твинер участвует в вашем описании. Конечно, вы просто хотите, чтобы таймер запускался каждую секунду, пока не сказали остановиться. Сделайте целые вары типа 'currentSec = 0;' и 'TotalSecs = 10;'. Функция таймера добавляет +1 к 'currentSec' каждый раз, когда срабатывает таймер, а также сообщает grape MC' gotoAndStop (currentSec); '. Имейте 'if'statement, чтобы проверить, совпадают ли оба. Итак, что произойдет, если у вас 10 кадров за 20 секунд? 10/20 = 0,5. Вы не можете перейти к кадру 0.5, но целочисленная часть будет автоматически округлять вниз, так что кадр 1 и 1.5 будут классифицироваться как кадр 1 (удерживание в течение 2 секунд). Просто попробуйте Таймер и посмотрите. –
Tweener через подростки кадров (copypasted линии сверху): 'currentAnimation = TweenMax.to (виноград [ "виноградные" + currentGrapeNumber], minutesPerGrape * 60, {кадров: 11, OnComplete: changeAnimation});' таймер уже задействованный, он уже подсчитывает, TweenMax просто вызывает callComback callback раньше, чем мне нужно, поэтому я спросил, есть ли обратный вызов onTimeOut или что-то в этом роде, проблема решена кстати. –
Хорошо. Я все еще смущен, но, по крайней мере, он решен и работает. –