Загрузка SWF в AS3, но flash продолжает повторять функцию конструктора, что мне делать? - PullRequest
0 голосов
/ 23 августа 2011

Я импортирую несколько внешних файлов, используя Loader-класс, и один из них - SWF-файл.При этом (раньше я делал это успешно, поэтому не ожидал каких-либо проблем), я сталкивался со всевозможными ошибками, и, наконец, произошел сбой Flash.

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

Вот мой код (загрузка SWF-файла теперь представляет собой простой тестовый файл, содержащий изображение без кода):

    private var slides:Loader = new Loader();

    public function DocumentClass()
    {
        trace(1)
        slides.load(new URLRequest("Resources/Slides.swf"));
        slides.contentLoaderInfo.addEventListener(Event.COMPLETE, SlidesComplete);
    }


    public function SlidesComplete(evt:Event):void
    {
        slides.contentLoaderInfo.removeEventListener(Event.COMPLETE, SlidesComplete);
        addChild(slides);
    }

Это отслеживает "11111111111 ..." и все умирает в конце.

HELP!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Я просто застрял на этой же проблеме.

В моем случае оказалось, что проблема была в том, что у swf было то же имя класса документа, что и у swf, который его загружал.

например.Main.as загружал другой SWF-файл, класс документа которого также назывался Main.as - Изменение этого значения на что-то еще решило бесконечный цикл.

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

Попробуйте поместить действие stop() в верхней части SWF-файла, в который вы загружаете (либо в ActionScript, либо на временной шкале). возможно , что SWF-файл загружается и в то же время выполняет цикл воспроизведения и запуска по циклу (отсюда ваш код работает снова и снова).

Я бы посмотрел на прогресспока файл SWF полностью не загрузится, перейдите к рамке дисплея:

  • Создание раздела для загрузки (ваш выбор, если вы хотите использовать предварительный загрузчик)
  • Создание другого раздела (наборключевых кадров) для загруженного контента.Я использую ключевые кадры, потому что это легко, но вы также можете подождать создания экземпляров классов, пока загрузка не будет завершена.

Ниже приведен фрагмент, из которого я иногда собираю:

// stop the playhead from moving ahead
stop(); // you can also use gotoAndStop("loading"); if you want

function loaderProgressHandler(event:Event):void {
    // switch the framehead to main which will show your content
    if(event.bytesLoaded >= event.bytesTotal) {
        event.target.removeEventListener(Event.PROGRESS, this.loaderProgressHandler);
        this.gotoAndStop("main");
    }
}

this.loaderInfo.addEventListener(Event.PROGRESS, this.loaderProgressHandler);

Надеюсь, что помогает !

...