AS3 preloader печали, не могу загрузить символы из библиотеки

Я создал предварительный загрузчик AS3 и поместил код для этого в первый кадр.

Затем я сделал символ и поместил его в библиотеку. Он был установлен как НЕ экспортируемый во фрейме 1, а в настройках fla все классы были экспортированы во втором фрейме. До второго кадра не было никаких ссылок на объект.

Затем флэш-память аварийно завершала работу всякий раз, когда я компилировал без установленного флажка "Экспорт в первом кадре".

Чтобы это исправить, один из моих друзей предложил мне запустить игровую логику на 3-м кадре, чтобы в нем был правильно загружен 2-й кадр. Казалось, что все работает нормально, класс был создан правильно.

Затем оказалось, что он не загружает мувиклип, а только создает экземпляр класса. Опять же, это можно исправить с помощью экспорта в кадре 1, но я действительно не могу себе этого позволить.

Тот же друг предложил мне поместить экземпляр символа на сцену в кадре 3 и выполнить игровую логику в кадре 4. Они сказали, что это правильно инициализирует мувиклип.

Однако это был не тот случай. Как я могу загрузить весь символ, графику и все, не экспортируя в кадр 1? Этот единственный символ будет содержать, вероятно, 10-20 МБ графики, поэтому его необходимо предварительно загрузить.

Спасибо за помощь!

РЕДАКТИРОВАТЬ: Короче говоря, все, что мне нужно, это какой-то способ загрузить мувиклип, чтобы его можно было использовать и видеть, и все.

РЕДАКТИРОВАТЬ: Есть ли способ принудительно загрузить мувиклип через AS3?

1 ответ

Решение

Трудно понять из описания.

Если вы создаете новый файл.fla, вставляете свой большой (10–20 МБ) клип в кадр 2, устанавливаете свой экспортный кадр как 2, затем попробуйте предварительно загрузить кадр 1 и получите доступ к содержимому большого клипа в кадре 2, получите ли вы такая же ошибка?

скажем, у вас есть это в кадре 1:

stop();
this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onComplete(event:Event):void{
gotoAndStop(2);
}

и в кадре 2:

trace(myLargeClip);//where myLargeClip would be your 10-20MB clip

Все должно быть хорошо, в противном случае, если трассировка вашего большого клипа вернет ноль, вы можете попытаться сделать сцену недействительной:

на кадре 2:

stage.addEventListener(Event.RENDER,onRender);
stage.invalidate();

function onRender(event:Event):void{
trace(myLargeClip);
}

В основном я предлагаю следующее:

  1. Выделите проблему. Посмотрите, вызывает ли ваш большой клип проблемы в аналогичном, но упрощенном сценарии и почему, а затем, как только вы получите исправление, используйте его в своей основной программе.
  2. Попробуйте отключить этап, хотя, поскольку я не до конца понимаю ваши настройки, это просто дикая догадка.

HTH, Джордж

Другие вопросы по тегам