|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
событие contentLoaderInfo для каждого объекта, созданного массивом
Всем доброго времени суток!
Делаю очередную галерею, на этот раз хочется реализовать такую механику: 1) Подгружаем XML с информацией о картинках 2) С помощью массива создаем контейнеры 3) Загружаем в каждый контейнер картинку 4) Вешаем событие на загрузку, по завершению которого, нужно спрятать прелоадер в контейнере Последний пункт, как раз и не получается, а именно не получается обратиться к контейнеру, чья картинка уже загрузилась. Вот часть кода: private function loadPicture():void { var arreyGallery1:Array = new Array; for(var i:int = 0; i < imgMax; i ++) { var loader:Loader = new Loader; loader.load(new URLRequest(gallery1Content[i].@small)); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplete); cont = new Cont(); stage.addChild(cont); cont.name = "cont" + [i]; cont.x = i * (cont.width + 50); cont.container_mc.addChild(loader); cont.info_txt.text = gallery1Content[i].@info; } } private function loaderComplete(e:Event):void { trace(e.target);//[object LoaderInfo] cont.play(); } |
|
|||||
Сделайте в Cont метод addLoader(loader:Loader), в этом методе добавляйте слушателей к лоадеру и добавляйте в список отображения контейнера. В слушателе COMPLETE (внутри контейнера) убирайте прелоадер.
|
|
|||||
Цитата:
сделал отдельный класс Container, в нем завел пару публичных переменных, в которые буду помещать информацию. Вот так выглядит наш Container package scripts { import flash.display.Loader; import flash.display.MovieClip; import flash.events.Event; public class Container extends MovieClip { private var picLoader:Loader; public var firstPicture:String; public var info:String; public function Container() { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { this.removeEventListener(Event.ADDED_TO_STAGE, init); trace(firstPicture + " this is firstPicture"); trace(info + " this is info"); container_mc.addChild(firstPicture);//возникает ошибка } } } private function loadPicture():void { var arreyGallery1:Array = new Array; for(var i:int = 0; i < imgMax; i ++) { cont = new Cont(); cont.firstPicture = gallery1Content[i].@small; cont.info = gallery1Content[i].@info; cont.x = i * (cont.width + 50); stage.addChild(cont); } } ошибка: |
|
|||||
Цитата:
Цитата:
|
|
|||||
в классе Container собрался добавить ее так:
хотел сделать так, что бы из главного класса переводились ссылки в переменные дополнительного класса и там же осуществлялся метод, который бы добавлял картинку в список отображения и вешал бы слушатель на загрузку этого изображения Последний раз редактировалось Dr_Bra; 24.01.2011 в 12:35. |
|
|||||
прикалываетесь
помогите лучше добиться правильных результатов, ссылку мы передаем, трэйс показывает все правильно, но загружать не получается .. Последний раз редактировалось Dr_Bra; 24.01.2011 в 12:50. |
|
|||||
Цитата:
package scripts { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; public class Container extends Sprite { private var picLoader:Loader; public function Container() { } public function loadImage(url:String):void { if (picLoader && container_mc.contains(picLoader) { container_mc.removeChild(picLoader); } //тут врубаешь прелоадер picLoader = new Loader(); var request:URLRequest = new URLRequest(url); picLoader.load(request); picLoader.addEventListener(Event.COMPLETE, picLoader_completeHandler); } private function picLoader_completeHandler(event:Event):void { //тут вырубаешь прелоадер //и добавляешь лоадер picLoader.removeEventListener(Event.COMPLETE, picLoader_completeHandler); container_mc.addChild(picLoader); } } } |
|
|||||
и когда в главном классе создаем контейнер и вызываем метод контейнера loadImage, мы передаем ссылку вот так?
ошибок никаких не появляется, но и изображения то же не появляются |
Часовой пояс GMT +4, время: 06:19. |
|
« Предыдущая тема | Следующая тема » |
Теги |
картинку , контейнер , массива , прелоадер |
Опции темы | |
Опции просмотра | |
|
|