загрузочный экран as3

Как вы создаете эти заставки «загрузка, пожалуйста, подождите» с полосой загрузки и процентом для вашего swf? Есть ли в as3 какие-то встроенные методы или его нужно разрабатывать с нуля?

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

О, и у меня весь мой контент хранится только в одном кадре. чистый код as3.


person astralmaster    schedule 11.07.2012    source источник


Ответы (3)


Если весь ваш код находится на временной шкале, то проще всего создать второй SWF-файл, который будет использоваться только для загрузки вашего основного SWF-файла. Если ваш основной SWF-файл называется main.swf, код в загрузочном SWF-файле будет примерно таким:

//make a loader
var loader:Loader = new Loader()

//listen for loading progress
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);

//listen for when the load is finished
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

//load!
loader.load(new URLRequest("main.swf"));

function onProgress(event:ProgressEvent):void
{
    //calculate how much has been loaded
    var percentageLoader:Number = event.bytesLoaded / e.bytesTotal;

    //use your percentage number here to drive a loader bar graphic
}

function onComplete(event:Event):void
{
    //remove listeners now that loading is done
    loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);

    //add loaded swf to the stage
    addChild(loader.content);
}

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

person redhotvengeance    schedule 11.07.2012
comment
Спасибо, думаю, пойду по этому пути. - person astralmaster; 12.07.2012

Есть несколько разных способов сделать это.

Либо у вас может быть двухэтапный процесс: создайте swf-файл, который просто загружается в основной файл, сообщает о ходе выполнения (путем прослушивания события прогресса в загрузчике), а затем добавляет загруженный swf-файл в качестве дочернего.

Или вы можете поместить весь свой контент во фрейм 2 и остаться в фрейме 1, сравнив значения root.loaderInfo.bytesLoaded со значениями root.loaderInfo.totalBytes, сообщив процентное соотношение, а затем, когда закончите, перейти к фрейму 2.

Лично я считаю способ 1 лучше, так как не нужно пачкать себя рамками.

Существует также третий способ, который использует некоторые странные теги метаданных для имитации второго способа, но без фреймов. Это немного грязно, но должно быть доступно для Google.

person Jonatan Hedborg    schedule 11.07.2012

У Flash есть собственный компонент, который вы можете использовать для этого:

http://help.adobe.com/en_US/ActionScript/3.0_UsingComponentsAS3/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7fa4.html

Или вы можете создать свой собственный индикатор выполнения с нуля:

http://www.zedia.net/2008/the-right-way-to-do-a-preloader-in-as3/

В Интернете есть множество ресурсов, которые позволяют вам настроить индикатор выполнения — просмотрите и найдите тот, который подходит вам и вашему стилю кодирования.

person Gigazelle    schedule 11.07.2012