Vishapakahr
02.12.2009, 19:45
даже не знал как назвать тему )) вопрос состаится в следующем
у меня на сервере (скажем в локахосте) динамически обнавляются картинки,
и получаю я всю информацию от XML .
XML у меня скаже такова вида
<images>
<img src="test/images/pic1" width="100" height="100"/>
<img src="test/images/pic2" width="100" height="100"/>
<img src="test/images/pic3" width="100" height="100"/>
<img src="test/images/pic4" width="100" height="100"/>
<img src="test/images/pic5" width="100" height="100"/>
</images>
итак мне нужно загружать все эти картинки в флеш с помощью Loader() ,
и для всеx составлять прелоадери
var host="http://localhost/";
var xmlloader:URLLoader=new URLLoader(new URLRequest(host+"slideshow.xml?p="+Math.random()));
xmlloader.addEventListener(Event.COMPLETE,done);
function done(e:Event){
var imgn=0; //попробуем считать количество картинок в XML е
var xmldata:XML=new XML(e.target.data);
var pics:Array=new Array();
var percents:Array=new Array();
while(xmldata.img[imgn]!=undefined){
pics[imgn]=new Loader();
pics[imgn].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loading);
pics[imgn].contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
pics[imgn].load(new URLRequest(host+xmldata.img[imgn].@src));
percents[imgn]=new TextField();
if(imgn%5==0){
pics[imgn].x=0;
pics[imgn].y=0;
percents[imgn].x=pics[imgn].x;
percents[imgn].y=pics[imgn].y;
}else{
pics[imgn].x=pics[imgn-1].x+Number(xmldata.img[imgn-1].@width);
pics[imgn].y=100*(imgn-imgn%5)/5;
percents[imgn].x=pics[imgn].x;
percents[imgn].y=pics[imgn].y;
}
percents[imgn].text="";
addChild(percents[imgn]);
/********вот здесь будьте внимательнее , потомучто у меня проблема именна на этом месте , если я буду использовать функции loading и loaded то в цикле while он сработывать не будет , потомучто цикл наверно выполняется очень быстро а для загрузки картинок должно уйти некоторое время . ***************/
function loading(e:ProgressEvent){
percents[imgn].text=100*(e.bytesLoaded/e.bytesTotal)+"%";
}
function loaded(e:Event){
removeChild(percents[imgn]);
addChild(pics[imgn]);
}
imgn++;
}
}
если картинок будет конечным числом то канечно индивидуально для каждого
я могу решать эту задачу , но даже при огромном количестве это тоже не оптимально ! и так как можно решать эту задачу с помощьу циклов ?? :rolleyes:
у меня на сервере (скажем в локахосте) динамически обнавляются картинки,
и получаю я всю информацию от XML .
XML у меня скаже такова вида
<images>
<img src="test/images/pic1" width="100" height="100"/>
<img src="test/images/pic2" width="100" height="100"/>
<img src="test/images/pic3" width="100" height="100"/>
<img src="test/images/pic4" width="100" height="100"/>
<img src="test/images/pic5" width="100" height="100"/>
</images>
итак мне нужно загружать все эти картинки в флеш с помощью Loader() ,
и для всеx составлять прелоадери
var host="http://localhost/";
var xmlloader:URLLoader=new URLLoader(new URLRequest(host+"slideshow.xml?p="+Math.random()));
xmlloader.addEventListener(Event.COMPLETE,done);
function done(e:Event){
var imgn=0; //попробуем считать количество картинок в XML е
var xmldata:XML=new XML(e.target.data);
var pics:Array=new Array();
var percents:Array=new Array();
while(xmldata.img[imgn]!=undefined){
pics[imgn]=new Loader();
pics[imgn].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loading);
pics[imgn].contentLoaderInfo.addEventListener(Event.COMPLETE,loaded);
pics[imgn].load(new URLRequest(host+xmldata.img[imgn].@src));
percents[imgn]=new TextField();
if(imgn%5==0){
pics[imgn].x=0;
pics[imgn].y=0;
percents[imgn].x=pics[imgn].x;
percents[imgn].y=pics[imgn].y;
}else{
pics[imgn].x=pics[imgn-1].x+Number(xmldata.img[imgn-1].@width);
pics[imgn].y=100*(imgn-imgn%5)/5;
percents[imgn].x=pics[imgn].x;
percents[imgn].y=pics[imgn].y;
}
percents[imgn].text="";
addChild(percents[imgn]);
/********вот здесь будьте внимательнее , потомучто у меня проблема именна на этом месте , если я буду использовать функции loading и loaded то в цикле while он сработывать не будет , потомучто цикл наверно выполняется очень быстро а для загрузки картинок должно уйти некоторое время . ***************/
function loading(e:ProgressEvent){
percents[imgn].text=100*(e.bytesLoaded/e.bytesTotal)+"%";
}
function loaded(e:Event){
removeChild(percents[imgn]);
addChild(pics[imgn]);
}
imgn++;
}
}
если картинок будет конечным числом то канечно индивидуально для каждого
я могу решать эту задачу , но даже при огромном количестве это тоже не оптимально ! и так как можно решать эту задачу с помощьу циклов ?? :rolleyes: