Look at "Bulk-Loader" framework, I use it for render queue. http://code.google.com/p/bulk-loader/
Good luck :) Alexandre. On 17 fév, 14:59, metSyS <[email protected]> wrote: > Else one. How can I understand when the image is loaded or all images > is loaded. To change some boolean, like : imageLoaded:boolean=true or > imagesLoaded:boolean=true. > > On 17 фев, 15:21, metSyS <[email protected]> wrote: > > > Thanks!=) ... really helps! Thanks a lot. Trying to create gallery. > > Now learning XML/ and trying to create dynamic 3D gallery. And this > > was last problem wich I have to solve. > > > On 17 фев, 15:07, miroslav <[email protected]> wrote: > > > > Hi, > > > > You have problem with using elementCounter public property. > > > In showXML event handler you increment the elementCounter in for loop > > > and then using it as index for the materialArray in ImageLoaded. > > > Problem is that the loading of images is asynchronous operation and > > > when the ImageLoaded handler gets called the elementCounter will be > > > equal to xmlList.length(). > > > One quick solution for this would be to use one tempArray for holding > > > the references to picLoader.contentLoaderInfo and when the ImageLoaded > > > gets called you would use tempArray.indexOf( e.target ) as the index > > > for the materialArray. > > > > Example: > > > > public var imageLoaders:Array = []; > > > ... > > > public function showXML(e:Event):void > > > { > > > xmlData=new XML(e.target.data); > > > xmlList=xmlData.children(); > > > xmlListLength=xmlList.length(); > > > for (var i:int=0; i < xmlListLength; i++) > > > { > > > var picLoader:Loader=new Loader(); > > > picLoader.load(new > > > URLRequest(xmlList[i].attributes()[0])); > > > > picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, > > > ImageLoaded); > > > > imageLoaders.push( picLoader.contentLoaderInfo ); > > > } > > > } > > > > private function ImageLoaded(e:Event):void > > > { > > > var planeMaterial:BitmapMaterial = new > > > BitmapMaterial(Cast.bitmap(e.target.content)); > > > > materialArray[imageLoaders.indexOf(e.target)]=planeMaterial; > > > > // Removing event handlers is good practice > > > > LoaderInfo(e.target).removeEventListener(Event.COMPLETE, ImageLoaded); > > > > } > > > > On Feb 17, 11:41 am, metSyS <[email protected]> wrote: > > > > > I have some problem. I'm loading some *.xml, get from there some > > > > attribute in wich I have URL to my pictures. It works correct. After > > > > it I want to load pictures and write them into array. I think the > > > > problem is that cycle works faster then images loading. I need to run > > > > the cycle and complete the step only when image is loaded and have > > > > wrote into array. Sorry for my bad english. Need help. > > > > > public var elementCounter:int=0; > > > > ... > > > > public function showXML(e:Event):void > > > > { > > > > xmlData=new XML(e.target.data); > > > > xmlList=xmlData.children(); > > > > xmlListLength=xmlList.length(); > > > > > for (var i:int=0; i < xmlList.length(); i++, > > > > elementCounter++) > > > > { > > > > var picLoader:Loader=new Loader(); > > > > picLoader.load(new > > > > URLRequest(xmlList[i].attributes()[0])); > > > > > > > > picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, > > > > ImageLoaded); > > > > } > > > > } > > > > > private function ImageLoaded(e:Event):void > > > > { > > > > var planeMaterial:BitmapMaterial = new > > > > BitmapMaterial(Cast.bitmap(e.target.content)); > > > > materialArray[elementCounter]=planeMaterial; > > > > } > >
