Невероятно низкая производительность при переходе к предыдущему кадру фильма SWF - PullRequest
0 голосов
/ 05 августа 2011

В SWF-файле, когда я использую следующий код для перемещения назад к предыдущему кадру, он невероятно медленный - занимает около 2 секунд.В то время как переход к следующему кадру занимает 30-40 миллисекунд.

movieClip.gotoAndStop(movieClip.totalFrames);//go the last frame of movie

while(movieClip.currentFrame>1) {
   var initTime:int = getTimer();
    movieClip.prevFrame();
    trace("Frame: "+movieClip.currentFrame+" Time taken:"+(getTimer()-initTime)/1000)        
 }

Вот вывод, который я получаю (время в секундах)

Frame: 84 Time taken:2.586
Frame: 83 Time taken:2.766
Frame: 82 Time taken:2.257
Frame: 81 Time taken:2.447

Фильм SWF создается изPDF с использованием SWFTools.

Размер файла: 5,8 МБ Количество кадров: 85

Есть какие-либо идеи о том, что делать по-другому, чтобы улучшить производительность перехода к предыдущему кадру?

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Я сообщил об этой проблеме сегодня на Adobe Jira:

http://bugs.adobe.com/jira/browse/ASL-313

0 голосов
/ 06 августа 2011

В любом случае: использование цикла while () для перехода между кадрами не является хорошей идеей - игрок будет пытаться выполнить инструкции в течение одного кадра, в то время как каждый кадр MovieClip должен отображаться в течение достаточно долгого времени, чтобы быть зарегистрированнымчеловеческий глаз.Пробовали ли вы это вместо этого:

movieClip.gotoAndStop(movieClip.totalFrames);//go the last frame of movie

var timer : Timer = new Timer (100,999);
timer.addEventListener (TimerEvent.TIMER, , function () : void {
    var initTime:int = getTimer();
    movieClip.prevFrame();
    trace("Frame: "+movieClip.currentFrame+" Time taken:"+(getTimer()-initTime)/1000)        
});
timer.start();

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

...