Здесь может происходить несколько вещей, в зависимости от того, чего вы пытаетесь достичь.
Хотя можно загружать растровые данные и создавать из них объекты Class для последующего использования, чаще загружать растровые данные и просто сохранять растровые изображения, поскольку вряд ли вам захочется создать несколько экземпляров растровых данных за один раз. вы загружаете его по многим причинам, не в последнюю очередь это накладные расходы памяти.
Предложение Алекса об использовании BulkLoader прекрасно, но в целях иллюстрации одного способа решения проблемы я собрал этот пример, который загружает три изображения в виде экземпляров Bitmap в объект Dictionary:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
private var loaders:Dictionary;
private var images:Dictionary;
private var imageUrls:Array = ["Image1.png", "Image2.png", "Image3.png"];
private function onCreationComplete():void
{
loadImages();
}
private function loadImages():void
{
loaders = new Dictionary();
images = new Dictionary();
for each (var imageUrl:String in imageUrls)
{
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete);
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(new URLRequest(imageUrl));
loaders[urlLoader] = imageUrl;
}
}
private function onURLLoaderComplete(event:Event):void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);
loader.loadBytes(event.target.data);
loaders[loader.contentLoaderInfo] = loaders[event.target];
delete loaders[event.target];
}
private function onLoaderComplete(event:Event):void
{
images[loaders[event.target]] = event.target.content;
delete loaders[event.target];
}
]]>
</mx:Script>
<!-- These won't bind, but should illustrate how to access the bitmaps -->
<mx:Image source="{images['Image1.png']}" />
<mx:Image source="{images['Image2.png']}" />
<mx:Image source="{images['Image3.png']}" />
</mx:Application>
Это хороший код, но шаги довольно просты:
- Загрузить каждое изображение с его собственным URLLoader, используя объект Dictionary, чтобы запомнить, какой загрузчик шел с каждым изображением;
- Когда каждый URLLoader возвращается с результатом, используйте Loader для захвата фактических байтов результата; и
- Сохраните байты загруженного загрузчиком результата в словаре изображений.
Как только загрузка будет завершена, у вас должен быть пригодный для использования словарь, снабженный ключами URL ваших изображений (или именами файлов, или как вам угодно), содержащий каждый отдельный экземпляр изображения. Оттуда, если вам нужно создать объекты Class (например, для использования в качестве пользовательских курсоров и т. Д.), Вы можете - отправлять сообщения обратно, если это то, что вы пытаетесь сделать, и мы подберем это оттуда.