2013-05-25 2 views
2

일부 응용 프로그램을 개발 한 이래 ProgressEvent.PROGRESS에 몇 가지 문제가 있습니다. 이 이벤트는 XML 데이터에서로드 된 모든 이미지에 할당하려고합니다. 마지막으로 올바르게 호출 된 모든 단일 이미지가 미리로드됩니다. 것은 이전의 모든 것들은 그렇지 않다는 것입니다. 나는이 해결책을 찾아 내려고 노력했다 : Problem with progressEvent Listener하지만 아마도 나는 어딘가에서 오류를 만든다.ActionScript 3.0 XML에서로드 된 여러 파일로 for 루프에 ProgressEvent 인스턴스를 만드는 방법

var total_columns_preview = myXML.table[companyNumber].column.length();   
for (var p:int=0; p < total_columns_preview; p++) 
{ 

    var foto_nest:String = myXML.table[companyNumber].column[p][email protected](); 
    var foto_name:String = myXML.table[companyNumber].column[p].toString(); 
    if (foto_nest == "foto") 
    { 
     var foto_icon_mc = new image(); 
     images_container_mc.addChild(foto_icon_mc); 
      if (foto_name != "") { 

     var varrLoadersFoto:Loader = new Loader(); 
      varrLoadersFoto.name = "image"+p; 
      varrLoadersFoto.load(new URLRequest("igwodociagi/min_pic/min/"+foto_name)); 
      varrLoadersFoto.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressLoadFoto); 
      varrLoadersFoto.contentLoaderInfo.addEventListener(Event.COMPLETE, onFotoLoaded); 
      foto_icon_mc.photo_container.addChild(varrLoadersFoto);           
       var preloader:MovieClip = new preloader_mc(); 
       foto_icon_mc.addChild(preloader);        
       images_container_mc.addChild(foto_icon_mc); 

      }    
    } 
} 

    function onFotoLoaded(event:Event) { 

      event.target.content.smoothing = true; 
      preloader_foto_dimm = new Tween(preloader, "alpha", Strong.easeOut, 1, 0, 0.6, true); 
      immage_foto_undim = new Tween(event.target.content, "alpha", Strong.easeOut, 0, 1, 0.6, true); 


    }    

    function progressLoadFoto(e:ProgressEvent) { 

      var percent:Number = e.bytesLoaded/e.bytesTotal * 100; 
      preloader.logo_preload.text = (Math.floor(percent)/100) + "%";               
      preloader.preload_box.scaleX = (Math.floor(percent)/100); 


    } 

내 질문이 프리 로더는 이미지의 각각에 대해 업데이트 할 수 있도록 모든 이미지에 별도 이벤트를 할당하는 방법입니다 :

내 코드입니다.

+0

'progressLoadFoto' 함수에서 정확히'preloader'는 무엇입니까? 어떤 전역 객체? – Cherniv

+0

예 글로벌 객체 (무비 클립)가 라이브러리 –

+0

에서 추가되었습니다. 그렇다면 한 번에 모두로드하기 시작하므로 하나의 텍스트 필드에 모든 이미지로드 데이터를 동시에 표시합니다. – Cherniv

답변

2

확인을 구하는 사람에게 이것은 https://stackoverflow.com/users/1206613/cherniv의 조언을 실현 한 것입니다. "는 이전의 onFotoLoaded 후 다음의 각로드 대신, 루프를에로드되지 않습니다"

var total_columns_preview = myXML.table[companyNumber].column.length(); 
for (var p:int=0; p < total_columns_preview; p++){ 
    var foto_nest:String = myXML.table[companyNumber].column[p][email protected](); 
    var foto_name:String = myXML.table[companyNumber].column[p].toString(); 
    if (foto_nest == "foto"){ 
     //loading object from library 
     var foto_icon_mc = new image(); 
     loadPictures(); 
    } 
} 
function loadPictures(){ 
    var varLoadersFoto:Loader = new Loader(); 
     varLoadersFoto.contentLoaderInfo.addEventListener(Event.INIT, initLoadFoto); 
     varLoadersFoto.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressLoadFoto); 
     varLoadersFoto.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedFoto); 
     varLoadersFoto.load(new URLRequest("igwodociagi/min_pic/min/"+foto_name)); 
     foto_icon_mc.photo_container.addChild(varLoadersFoto); 
      //loading preloader object from library 
      var preloader:MovieClip = new preloader_mc(); 
      foto_icon_mc.addChild(preloader); 
    function initLoadFoto(e:Event):void{ 
     //here i place where photo should be visible (x, y - possition) 
    } 
    function progressLoadFoto(e:ProgressEvent){ 
     var percent:Number = e.bytesLoaded/e.bytesTotal * 100; 
     preloader.logo_preload.text = (Math.floor(percent)/100) + "%"; 
     preloader.preload_box.scaleX = (Math.floor(percent)/100); 
    } 
    function onLoadedFoto(e:Event){ 
     //smoothing loaded content (bitmap) if dimentions of loaded file are too big 
     e.target.content.smoothing = true; 
     preloader_foto_dimm = new Tween(preloader,"alpha",Strong.easeOut,1,0,0.6,true); 
     immage_foto_undim = new Tween(e.target.content,"alpha",Strong.easeOut,0,1,0.6,true); 
    } 
} 

감사합니다. 도움이 되길 바래.