2011-12-05 40 views
0

大家好我想在點擊按鈕時切換圖片。所以我有這個代碼。如何「立即在UILoader中顯示圖像」?

var k2:Boolean = false; 
btn1.addEventListener(MouseEvent.CLICK, imgChanger); 
function imgChanger(e:Event):void 
{ 
    if (k2==false) 
    { 
     img1.myUILoader.source = "img/01.jpg"; 
     k2 = true; 
    } 
    else 
    { 
     img2.myUILoader.source = "img/02.jpg"; 
    } 
} 

但它不是很好的解決大圖像,因爲它們是每次點擊按鈕下載。我想在網站加載時立即下載此圖像。

任何線索?

+0

爲什麼不聲明一個裝載器數組並在官方化過程中加載所有文件? –

+0

好的,但這兩個UILoader是在某些MC。我正在考慮一些使用JPG格式的容器,但我該怎麼做? –

回答

0

繼承人可以使用什麼......這個加載所有圖片在後臺,當第一個被加載,所以你可以立即顯示它會給你通知時,所有加載...如果有很多的圖片我建議只加載下一個......不是所有的人不被內存豬..

var loadedImages:Vector.<DisplayObject> = new Vector.<DisplayObject>; 
var imageUrls:Vector.<String> = new Vector.<String>; 

// set your image urls, manually, from xml... whatever 
imageUrls.push("http://www.mySite.com/image0.jpg"); 
imageUrls.push("http://www.mySite.com/image1.jpg"); 
imageUrls.push("http://www.mySite.com/image2.jpg"); 

// load all image sequentially 
var curImageLoadingIndex:int=0; 
loadNextImage(); 
/** loads each image sequentially via recursive calls */ 
function loadNextImage():void{ 
    if (curImageLoadingIndex>=imageUrls.length){// done loading 
     allImagesLoaded() 
    }else{// load next one 
     var ldr:Loader=new Loader(); 
     ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded); 
        ldr.load(new URLRequest(imageUrls[curImageLoadingIndex])); 

     function loaded(event:Event):void{ 
      ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE,loaded);//remove listener to prevent memory leaks 
      loadedImages.push(ldr);//store loaded image for user whenever needed 
      if (curImageLoadingIndex==0) 
       firstImageReady(); 
      curImageLoadingIndex++;//increment to load the next item 
      loadNextImage(); 
     } 
    } 
} 

/** notificaltion when all the images have been loaded */ 
function allImagesLoaded():void{ 
    // know all images are loaded here... 
} 

/** first image ready to use */ 
function firstImageReady():void{ 
    var fistImage:DisplayObject = loadedImages[0]; 
    // do something with your image here... 
} 

,如果你想使用的UILoader只是改變2號線在請求

var ldr:Loader=new UILoader(); 
    ldr.addEventListener(Event.COMPLETE,loaded); 
+0

我需要加載它們,因爲我不知道我需要什麼圖像。 從我看到的情況來看,如果您有一些img,並且您按照相同的順序不斷顯示它,那麼您的代碼會非常棒。 –

+0

@Dudi,這是否回答你的問題,還是你需要更多的幫助? – mihai

+0

快速問題,您將imageUrls [x]分配給ldr的位置? –