Actionscript - цикл до наведения мыши, затем переход к кадру x - PullRequest
0 голосов
/ 21 декабря 2009

Я пытался заставить это работать некоторое время. У меня есть 25 кадров, которые я хочу зациклить, но при наведении курсора мыши я хочу перейти к 26 кадру и продолжить. Есть предложения?

Actionscript 2 или 3 в порядке ...

1 Ответ

1 голос
/ 21 декабря 2009

Если вы вообще не хотите использовать временную шкалу, вы можете либо проверить currentFrame на каждом кадре с помощью обработчика ENTER_FRAME, либо использовать метод addFrameScript ():

var isIdle : Boolean = true;

var loopIfIdle: Function = function() : void
{
  if (isIdle)
    mc.gotoAndPlay(1);
};

mc.addFrameScript(24, loopIfIdle);
mc.addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver);


// The mouse handler:
function handleMouseOver(ev : MouseEvent) : void
{
  isIdle = false;
}

По сути, здесь происходит то, что объявляется логическая переменная, которая будет использоваться для указания того, была ли стадия Flash уже взаимодействовала (зависла). Используя замыкание (метод, который наследует переменные в окружающей области), мы создаем функцию loopIfIdle , которая будет иметь доступ к этому флагу.

addFrameScript () выполняет более или менее то же самое, что и добавление кода в кадр на временной шкале Flash CS3 / CS4. Таким образом, функция loopIfIdle будет выполняться каждый раз, когда точка воспроизведения проходит кадр 25. Но теперь, поскольку мы используем замыкание, мы можем проверить состояние флага isIdle изнутри скрипт кадра.

Обработчик события MOUSE_OVER установит для isIdle значение false, чтобы указать, что сцена была перемещена. Это означает, что в следующий раз, когда loopIfIdle будет вызван, он не будет зацикливаться (то есть возвращаться к кадру 1), следовательно, достигая желаемого эффекта.

Еще более простым решением было бы просто перейти к gotoAndPlay (26) в обработчике MOUSE_OVER и игнорировать весь сценарий фрейма и подход флага isIdle. Это, однако, не гарантирует плавного перехода от цикла к кадру 26 (представьте, если мышь войдет в сцену на кадре 1, который затем сразу перейдет к 26.) В зависимости от ваших требований, это все равно может быть хорошей альтернативой.

...