Как «Мгновенно показывать изображение в UILoader.»? - PullRequest
0 голосов
/ 05 декабря 2011

Привет, ребята. Я хочу переключать изображения, когда нажимаю на кнопку.Итак, у меня есть этот код.

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";
    }
}

Но это не очень хорошая проблема для больших изображений, потому что они загружаются каждый раз, когда я нажимаю кнопку.Я хочу скачать это изображение в момент загрузки сайта.

Любая подсказка?

1 Ответ

0 голосов
/ 05 декабря 2011

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

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...