Ваш вопрос проходит в несколько кругов, но я думаю, что я получаю то, что вы хотите.
Вы можете использовать для этого метки фреймов и любой энтерфрейм, чтобы проверить текущую метку фрейма для текущего фрейма. Или вы можете добавить рамку для тех кадров, о которых хотите знать.
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
}
}