![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: May 2006
Адрес: Нск
Сообщений: 91
|
Как вижу это я - сейчас вы занимаетесь какой-то ересью и сами до конца не понимаете что делаете. К тому же явно не хватает знания основ, обязательных для комфортной работы с as3
Примерный план получения хорошего лоадера: 1. Один инстанс на все приложение (можно синглтон, но не обяательно). 2. Загруженные битмапы хранятся в хэшмапе, ключем служит ссылка по которой грузили. 3. Публичный метод getImage, если картинка с данного урла уже есть в хэшмапе то отдаем ее, иначе запускаем загрузку. На загрузчика вешаем все нужные листенеры. 4. По окончании загрузки картинки пишутся в хэшмапу. Диспатчим событие что лоадер загрузил что-то новое, можно в событии передавать картинку и ссылку. Все заинтересованные в загрузке картинок классы подписываем на событие. Примерно как-то так. Под рукой нет толкового лоадера, писать его для вас - лень. Спрашивайте где что непонятно. И удачи ![]() Последний раз редактировалось Alkaz; 26.07.2011 в 15:50. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
вот что-то похожее делал:
https://github.com/k0t0vich/fazenda/...itmapLoader.as
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 11
|
нашел ответ на свой вопрос, правда не совсем то что хотел получить, но на безрыбье так сказать. Если в переменных другого класса определить этот объект, иницилизировать а потом навесить любое событие, то переменные определенные паблик в классе определяются внутри события корректно.
вот финальный код класса(кое-что исправил спасибо комментариям): package { import flash.display.*; import flash.events.*; import flash.net.*; /* @author soniko @author GG */ public class PictureLoader extends Sprite { private var count:int; private var loadList:Array; private var loaderList:Array; private var ldr:Loader; private var arBitmapdata:Array; public var arBmd:Array; public function PictureLoader(loaderList):void { arBitmapdata = new Array(); arBmd = new Array(); ldr = new Loader(); loadList = loaderList; count = loadList.length; ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete, false, 0, true); loadComplete(null); trace(arBmd); } private function loadComplete(eve:Event):void { if (eve) { //super.addChild((eve.target as LoaderInfo).content); arBitmapdata.push(eve.target.content.bitmapData.clone()); loadList.shift(); } if (loadList.length > 0) { loadNext(new URLRequest(loadList[0])); } else{ onLoadComlete(); } } private function loadNext (request:URLRequest):void { ldr.load(request); } private function onLoadComlete():void{ arBmd = arBitmapdata; ldr.contentLoaderInfo.removeEventListener(loaderevent.COMPLETE, loadComplete); } } } |
|
|||||
|
.
|
Да, это известная фича ООП. Фундаментальная.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Я писал про передачу параметра в слушатель, думаю данные из события практически то же http://www.flasher.ru/forum/blog.php?b=239
А вообще есть BulkLoader'ы всякие готовые уже - посмотрите как там. У меня есть свой, но не думаю, что могу его выкладывать, да и не думаю, что он лучше и понятнее BulkLoader. Там нет Array ни одного, но нет и ожидания загрузки одного, прежде чем грузить следующий.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Jul 2011
Сообщений: 11
|
возможно и фундаментальная, но если не событие а произвольный метод, то фига с маслом.
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Вы путаете понятия событие и хэндлер (листенер) события.
Хэндлер - это такой метод, который в качестве параметра принимает событие(объект класса Event или его потомков). Он может быть как публичным (чтобы назначать извне класса) так и приватным (внутри класса) Добавлено через 52 минуты Еще есть хитрый способ симулирующий синхронность. Создаём свой класс битмаплоадера, которому в метод loadToBitmap(url, bitmap) в качестве параметра передаём урл и ссылку на Bitmap. Этот класс сам всё грузит и сам после загрузки (или из хэш листа ) присоединяет
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 26.07.2011 в 18:21. |
|
|||||
|
>> Этот класс сам всё грузит и сам после загрузки присоединяет
ага, так это ж Loader ![]() вот только в каком месте он симулирует синхронность не совсем ясно Последний раз редактировалось silin; 26.07.2011 в 20:07. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|