AS3 preloader печали, не может загрузить символы из библиотеки - PullRequest
0 голосов
/ 11 февраля 2010

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 11 февраля 2010

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

Если вы создаете новый файл .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, Джордж

...