gotoandplay определить конец и начать играть в другой раздел шкалы времени - PullRequest
0 голосов
/ 20 августа 2010

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

например: 3 объекта и 6 кадров.

каждый объект имеет анимацию в кадре и противоположность анимации в кадре.

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

Мне нужно определить конец последовательности анимации, чтобы начать первый кадр выбранного объекта.

Я надеюсь, что это имеет смысл, и любая помощь очень ценится.

Спасибо

1 Ответ

0 голосов
/ 20 августа 2010

Ваш вопрос проходит в несколько кругов, но я думаю, что я получаю то, что вы хотите.

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

EnterFrame:

Добавьте метки к кадрам, о которых вы знаете, на временной шкале. Может быть, назвать фрейм-метки как "roll_start", "roll_end" и т. Д.

затем используйте энтерфрейм, чтобы проверить, что вы находитесь на интересующем вас кадре, вот так:

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
private function enterFrameHandler(e:Event):void {
    if (currentLabel == 'roll_start') {
        // Rollover started
    } else if (currentLabel == 'roll_end') {
        // Rollover ended
    }
}

FrameScript:

Используйте недокументированный метод frameScript , чтобы добавить сценарий, который отправляет настраиваемое всплывающее событие на интересующие кадры, а затем просто прослушивает это событие, вместо того, чтобы прослушивать EnterFrame и проверять каждый кадр:

private static const TIMELINE_AT_LABEL:String = 'timelineAtLabel';
function frameScript():void {
    dispatchEvent(new Event(TIMELINE_AT_LABEL, true, true));
}

var rollStartFrame:int = 10;
var rollEndFrame:int = 20;
addFrameScript(rollStartFrame, frameScript);
addFrameScript(rollEndFrame, frameScript);

addEventListener(TIMELINE_AT_LABEL, atLabelHandler);
private function atLabelHandler(e:Event):void {
    var frame:int = e.target.currentFrame;
    if (frame == rollStartFrame) {
        // Rollover started
    } else if (frame == rollEndFrame) {
        // Rollover ended
    }
}
...