2013-10-07 2 views
0

Я хочу иметь несколько экземпляров символа movieClip на сцене, чтобы каждый из них загружал другое изображение. Символ movieClip должен иметь 2 кадра. Первый кадр, содержащий скрипт действия для индикатора выполнения загрузчика; и второй кадр с UILoader, который отображает внешнее изображение.AS3 - предварительный загрузчик MovieClip

Я знаю, как реализовать предварительный загрузчик для SWF-файла. И я знаю, как иметь символ movieClip с UILoader и создавать несколько экземпляров с разными изображениями.

Поскольку я хочу разместить этот файл в Интернете, мне нужны предварительные загрузчики для каждого экземпляра. Но я не могу понять, как иметь предварительный загрузчик внутри экземпляра (он не работает, независимо от того, находится ли фактическое изображение на втором кадре мувиклипа или загружается извне)

ответ

0

Это можно сделать, просто используя progressBar и класс загрузчика.

import flash.display.Loader; 
import fl.controls.ProgressBar; 
import flash.events.Event; 
import fl.containers.UILoader; 

var myLoader:Loader = new Loader(); 
var my_pb:ProgressBar = new ProgressBar(); 

addChild(my_pb); 

myLoader.load(new URLRequest("http://www.SomeImageURL....")); 
my_pb.source = myLoader.contentLoaderInfo; 

myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completefunction); 

function completefunction(e:Event):void 
{ 
    removeChild(my_pb); 
    myLoader.content.width = 200; 
    addChild(myLoader); 
} 

Чтобы иметь символ MovieClip использовать различные изображения, нам нужно просто добавить переменную строку в мувиклип и передать URL этой переменной каждый раз, когда мы создаем новый экземпляр этого.

1

Это потому, что сцена ведет себя отличную от MovieClip , Вам необходимо сделать предварительный загрузчик программным путем. определите класс для символа MovieClip и создайте экземпляр другого MC, который работает как preloader, затем сделайте его видимым и воспроизведите его, пока изображение меняется, добавив eventListener: addEventListener(ProgressEvent.PROGRESS, updateInfo);