2009-12-15 4 views
0

내 문제는이 loadNewRow 함수에서 로더를 분리하는 방법을 알 수 없다는 것입니다. 이상적으로, 나는 모든 swf를로드하는 방법을 알아 내고 싶습니다. 동적 이름을 지정하려면 ... thmb1loaded, thmb2loaded, thmb3loaded .. a ("loaded") 배열에 푸시 한 다음 그리드를 작성하는 데 사용합니다. .로더 배열과 이미지 격자 배열 분리 문제

지금은로드 롤링 기능이 작동 할 때마다로드됩니다. 나는 그것의 각 SWF가로드되는 contentloaderinfo의 .onComplete 내에서 .name을을 반복하는 간단한 문제 확신 ... anyhelp는

var filePaths:Array=["thmb1.swf","thmb2.swf","thmb3.swf","thmb4.swf", "thmb5.swf", "thmb6.swf", 
"thmb7.swf","thmb8.swf", "thmb9.swf", "thmb10.swf", "thmb11.swf" ]; 

function loadImages3(event:MouseEvent):void { 
    TweenLite.to(pic, 8, {alpha:0, ease:Expo.easeInOut});// dim image container 
    trace("loadImages3 fired ---------------------------------------------------------") 
    unloadImages3resize(); loadImages3Flag=true; 
    var randomScale:Number = .3 + Math.random();trace("in loadimages3 function randomScale is now.. " + randomScale); 
    var stage_w=stage.stageWidth;trace("in loadimages3 function stage_w is = " + stage_w); 
    var stage_h=stage.stageHeight;trace("in loadimages3 function stage_h is = " + stage_h); 
    var thumbWidth:Number=240;var thumbHeight:Number=155;//var randomScale:Number=.45; 
    var scaleThumbs:Number=randomScale; 
    var finalRandomScaledWidth:Number=thumbWidth*scaleThumbs; 
    var finalRandomScaledHeight:Number=thumbHeight*scaleThumbs; 
    var clipsFitX=Math.floor(stage_w/finalRandomScaledWidth); 
    trace("in loadimages3 function finalRandomScaledWidth is = " + finalRandomScaledWidth); 
    var clipsFitY=Math.floor(stage_h/finalRandomScaledHeight); 
    trace("in loadimages3 function finalRandomScaledHeight is = " + finalRandomScaledHeight); 
    var clipsFitXTotal:Number = clipsFitX+1; // add extra one on the horizontal 
    var clipsFitYTotal:Number = clipsFitY+2; // add extra two on the vertical 
    trace ("ClipsFitXtotal) = " +clipsFitXTotal, "(clipsFitYTotal) = " + clipsFitYTotal); 
    loadnewRow(clipsFitXTotal, clipsFitYTotal,randomScale,finalRandomScaledHeight, finalRandomScaledWidth); 
} 

function loadnewRow(clipsFitXTotal:Number, clipsFitYTotal:Number, randomScale:Number, 
        finalRandomScaledHeight:Number, finalRandomScaledWidth:Number):void { 
    trace("loadnewRow fired ---------------------------------------------------------"); 
    trace("randomScale out of loop but in loadnewRow function loop =" + randomScale); 
    for (var z:Number =0; z < clipsFitYTotal; z++) { 
     for (var b:Number = 0; b < clipsFitXTotal; b++) { 
      var ldr:Loader = new Loader(); 
      var randomSelection = Math.floor((Math.random()*filePaths.length)); 
      ldr.load(new URLRequest (filePaths[randomSelection])); 
      ldr.contentLoaderInfo.addEventListener(Event.INIT, initHandler); 
      ldr.scaleX=ldr.scaleY=randomScale;//trace("randomScale in the loop is =" + randomScale); 
      ldr.y=finalRandomScaledHeight*z;//trace("finalRandomScaledHeight*z =" + ldr.y); 
      ldr.x=finalRandomScaledWidth*b;//trace("finalRandomScaledWidth*b =" + ldr.x); 
      ldr.alpha=.8; 
      //trace("[ldr] = number of children = " + ldr.numChildren); 
      //trace("[THIS] = number of children = " + this.numChildren); 
      //trace("[THIS] name is = " +this.name); 
      ldr.cacheAsBitmap = true; 
      //thumbholder.addChild(ldr); 
      addChildAt(ldr,1); 
      filePaths.splice(randomSelection, 1); 
      if (filePaths.length==0) { 
       filePaths.push("thmb1.swf","thmb2.swf","thmb3.swf","thmb4.swf","thmb5.swf", 
        "thmb6.swf","thmb7.swf","thmb8.swf", "thmb9.swf", 
       "thmb10.swf", "thmb11.swf"); 
      } 
     } 
    } 
} 

답변

0

I ..이 나에게 일의 미친 지난 몇 운전하고있다 주시면 감사하겠습니다 단순화하기 위해 라이브러리/프레임 워크를 사용하는 것이 좋습니다. 내가 splinklibrary를 사용할 때 여기 splinklibrary의 도움으로 문제를 해결하기 위해 몇 가지 전형적인 코드 : 당신이 너무 라이브러리하여 ​​목표에 도달 할 수 물론

public function Test() { 
     var filePaths : Array = ["thmb1.swf","thmb2.swf","thmb3.swf"]; 

     var q : IQ = new Q(); 
     q.register(QCompleteEvent.COMPLETE, onComplete); 
     for each (var path : String in filePaths) { 
      q.add(new QLoader(new URLRequest(path))); 
     } 
     q.start(); 
    } 

    private function onComplete(e : QCompleteEvent) : void { 
     var displays : Array = new Array(); 
     var q : IQ = IQ(e.getSource()); 
     for each (var loader : QLoader in q.getItems()) { 
      displays.push(addChild(loader.getContent())); 
     } 

     arrange(displays); 
     show(displays); 
    } 

    private function arrange(displays : Array) : void { 
     // put in your code to arrange the loaded displayobjects 
    } 

    private function show(displays : Array) : void { 
     // put in your code to tween the loaded displayobjects 
    } 

,하지만 요점은 도서관 종종 유지하는 데 도움이 당신의 간단하고 간결한 코드.

+0

와아, 나는이 AS3에 다소 익숙하며 여전히 주니어가 걸려 넘어지면서 내 방식이 상당히 새로운 것처럼 보입니다. 프레임 워크는 매우 멋지게 보입니다. 나는이 경험을 위해 도서관에 의지하지 않고 이것을 알아 내려고 노력하고 있습니다. 그러나 저는 큰 시간을 걸렸습니다. 다른 프레임 워크를 보았습니다. CASA 및 bulkloader 라이브러리 ... 그래서 도움이 있다는 것도 알고 있습니다. 하루 정도 혼자서하려고 생각할 것입니다. 그렇다면 아무것도 ... –