2012-04-07 2 views
0

Как гласит название, файл загружается правильно, но экран загрузки только вспыхивает в конце.Только изображения загрузчика экспортируются в кадр 1, но загрузчик по-прежнему отображается только на 100%

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

Возможно ли, что есть очередь загружаемых вещей, а изображение загрузчика находится внизу этой очереди? Так как это было одной из последних вещей, добавленных в проект

+0

Вы уверены, что остановились в кадре 1 и продолжаете только раз все загружается? в противном случае, если вы перейдете к следующим кадрам, все остальное начнет загружаться также – scibuff

+0

Да. В моем основном классе конструктор имеет stop(); в нем и в функции, которую он вызывает, когда событие загрузки завершено, он gotoAndStop (2); – Harold

ответ

3

Если ваш предварительный загрузчик появляется только после загрузки файла, это означает, что у вас все еще есть другие объекты, связанные с фреймом 1. Вспышка очень разборчива по этому поводу и легко перемещать вещи на фрейм 1 независимо от ваших настроек. Когда вы компилируете, Flash строит график зависимостей, чтобы определить, какие элементы необходимы для каждого фрейма. Если он считает, что актив необходим раньше, чем параметр экспорта фрейма, он игнорирует настройку и переносит актив на этот фрейм. В частности, любого класса, ваш класс документа непосредственно ссылки будут автоматически рывок на кадре 1.

Проверки «Сформировать отчет о размере» в файле, Настройка публикации, Flash может помочь вам увидеть, сколько данных экспортируются на рам 1. Вот несколько советов, чтобы убедиться, что все взаимосвязано на телосложении:

  • в Publish Settings, Flash, ActionScript Параметры, убедитесь, что «Экспорт кадров для классов» установлен в 2 или выше.
  • Убедитесь, что символы библиотеки говорят «Экспорт по кадру 2» в их свойствах связи. Старые версии Flash могут экспортировать их в кадр 1, независимо от рамки экспорта класса. В этом случае вам нужно будет выполнить метод oldschool для снятия флажка «Экспортировать по кадру 1» и вручную перетащить эти символы на временную шкалу в кадре 2.
  • Не ссылайтесь непосредственно на классы из класса документа или на основной временной шкале. Класс Document и все его ссылки всегда помещаются в кадр 1. Каждый раз, когда вы делаете var f : MyClass; в своем классе документа или на временной шкале корня, вы ссылаетесь на MyClass, а Flash автоматически выдергивает его на фрейм 1.

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

var gameClass : Class = flash.utils.getDefinitionByName("Game") as Class; 
var game : Sprite = new gameClass(); 

в этом случае ваш Preloader становится класс документа, и косвенно создает игру класс при загрузке SWF. Это позволяет избежать прямых ссылок на Game и его содержимое.

+0

Отличный ответ, очень информативный, и теперь я понимаю его намного лучше. Большое спасибо, Майк :) – Harold

+1

Моя первоначальная ошибка заключалась в удалении экземпляра моего класса документа во фрейме 2. К сожалению, это создает переменную-член типа «DocumentClass» в основном классе временной шкалы, что косвенно гарантирует, что она будет экспортироваться в фрейм 1. Единственное решение - полностью исключить создание экземпляра класса документа на основной временной шкале и просто создать его * через код * в кадре 2 с параметром getDefinitionByName. – Triynko

 Смежные вопросы

  • Нет связанных вопросов^_^