2009-09-28 4 views
0

У меня есть следующий код в ActionScript3 для загрузки изображений:ActionScript 3 Рефакторинг изображения погрузчики

// Create the image areas 
    var imageArea1 = new imageArea(); 
    var imageArea2 = new imageArea(); 
    var imageArea3 = new imageArea(); 
    var imageArea4 = new imageArea(); 
    var imageArea5 = new imageArea(); 

    var image1; 
    var image2; 
    var image3; 
    var image4; 
    var image5; 

    addChild(imageArea1); 
    addChild(imageArea2); 
    addChild(imageArea3); 
    addChild(imageArea4); 
    addChild(imageArea5); 

    // Image1 
    // function to load images to the page 
    function loadImage1(url:String):void { 
     image1 = new Loader(); 
     image1.load(new URLRequest(url)); 
     image1.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded1); 
    } 

    //Callback event after image has been loaded. 
    function imageLoaded1(e:Event):void { 
     // Load Image 
     imageArea1.addChild(image1);//display the photo 
     //trace ('width:'+image1.width,' height:'+image1.height); 
     image1.y = (stageHeight-image1.height); 
     //trace(image1.y); 
     var otherindex = getChildIndex(myBackground) 
     setChildIndex(imageArea1,otherindex + 1); 
    } 

От взглядов его, я должен был бы скопировать и вставить функции loadImage1 и imageLoaded1 для каждого изображения. В идеале я хотел бы как-то перейти в params к функции .addEventListener.

Как я могу реорганизовать это, так что мне не нужно копировать и вставлять функции для каждого изображения, это кажется повторяющимся.

ответ

0

Я думаю, что самый простой способ будет добавить IMAGEX, в качестве параметра:

function loadImage(url:String, imageObj:Object):void { 
    imageObj = new Loader(); 
    imageObj.load(new URLRequest(url)); 
    imageObj.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded1); 
} 

Будет ли это хорошо для вас? Я надеюсь, что это будет :)

0

Попробуйте это (я не проверял, но он должен работать, если вы можете получить его для компиляции - не забудьте надлежащий импорт ;-)):

var imageURLs:Array = ['blah.png', 'blah2.png', 'foo.png']; 
var imageLoaders:Array = new Array(); 
var imageAreas:Array = new Array(); 

for each (var url:String in imageURLs) { 
    var loader:Loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded); 
    loader.load(new URLRequest(url)); 

    imageLoaders.push(loader); 

    var theImageArea:imageArea = new imageArea(); 
    addChild(theImageArea); 
    imageAreas.push(theImageArea); 
} 

function imageLoaded(e:Event):void 
{ 
    var loader:Loader = Loader(e.target.loader); 

    var index:int = imageLoaders.indexOf(loader); 
    imageAreas[index].addChild(loader); 

    loader.y = (stageHeight - loader.height); 

    var otherChildIndex:int = getChildIndex(myBackground); 
    setChildIndex(imageAreas[index], otherChildIndex + 1); 
} 
Смежные вопросы