Экстренальный предварительный загрузчик ActionScript3 не воспроизводит видеоклип

Я уверен, что это простая проблема, и я упускаю из виду кое-что очевидное.

У меня есть внешний SWF с предварительной загрузкой, который не содержит ничего, кроме фрагмента ролика (loader_graphic) на одном слое, в первом (и единственном) кадре; и сценарий загрузки на другом слое в первом кадре. Фрагмент ролика представляет собой простую циклическую анимацию без индикаторов выполнения. Если я не включу сценарий, он отлично работает.

Сценарий загружает внешний SWF-файл и сам по себе работает так, как должен.

Когда я объединяю их, я получаю первый кадр фрагмента ролика, а затем он замирает, пока внешний SWF-файл не будет полностью загружен. После загрузки он проигрывается один раз и останавливается. Я новичок в AS3, и я знаю, что предварительная загрузка - это одно из изменившихся соглашений, поэтому я, вероятно, не закодировал его должным образом:

loader_graphic.play();

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.ProgressEvent;


var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
l.load(new URLRequest("external.swf"));

function loop(e:ProgressEvent):void
{
  var perc:Number = e.bytesLoaded / e.bytesTotal;
}


function done(e:Event):void
{
  loader_graphic.stop();
  addChild(l);
}

Любая помощь приветствуется.


person Ty Morton    schedule 20.10.2012    source источник
comment
Это может не быть связано, но убедитесь, что никакие скрипты в external.swf не ссылаются на этап, так как свойство stage будет иметь значение null, пока загружаемый фильм не добавит его с помощью addChild (). Поместите что-то подобное в конструктор external.swf: addEventListener(Event.ADDED_TO_STAGE, init); и не обращайтесь к этапу до тех пор, пока не будет вызван init ().   -  person null    schedule 21.10.2012


Ответы (1)


Оказывается, прелоадер все время играл. Это просто застопорилось, потому что основной SWF-файл перегружал Flash-плеер.

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

person Ty Morton    schedule 24.10.2012