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

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

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

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

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

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

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

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

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

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

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


person Cyclone    schedule 10.02.2010    source источник
comment
Прикрепите экземпляр MovieClip к кадру 2.   -  person Anon.    schedule 11.02.2010


Ответы (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

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

на кадре 2:

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

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

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

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

HTH, Джордж

person George Profenza    schedule 11.02.2010
comment
Я действительно понял это, ваш совет по настройке фрейма экспорта для ActionScript был тем, что его сломало ... Я вернул его к кадру 1, он заработал, так как символы были загружены. - person Cyclone; 11.02.2010