2011-12-05 5 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

あなたはローダの配列を宣言し、inaticization内のすべてのファイルをロードしませんか? –

+0

でも、これらの2つのUILoadersは何かMCにあります。私はthouse JPGといくつかのコンテナについて考えていますが、どうすればいいですか? –

答えて

0

heresこれはバックグラウンドですべてのイメージを読み込み、最初に読み込まれたときに通知して、すぐに表示したり、すべてが読み込まれたときに通知したりします。私は、次のいずれかをロード示唆画像...それらのすべてではないが...

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に割り当てますか? –

関連する問題