Объект Loader не отправляет Event.COMPLETE - PullRequest
3 голосов
/ 24 июня 2009

Я использую этот класс для одновременной загрузки нескольких изображений. Каким-то образом загрузчик не вызывает никакого события (Event.COMPLETE, ProgressEvent.PROGRESS), странным образом я также не получаю никаких ошибок (используя FlashDevelop и Flex3 SDK).

package  
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.*;
    import flash.net.URLRequest;

    public class MultiImgLoader extends EventDispatcher
    {
        private var img_array:Array;
        public var images:Array;
        private var loader:Loader = new Loader();

        public function MultiImgLoader(img_array:Array) 
        {
            this.img_array = img_array;
            trace("[MultiImgLoader] about to load " + img_array.length);
            if (img_array.length > 0)
            {
                load(img_array[0]);
            }
        }

        private function load(img:String):void
        {
            trace("[MultiImgLoader] load " + img);
            loader.addEventListener(ProgressEvent.PROGRESS, progress);
            loader.addEventListener(Event.COMPLETE, this.ready);
            var req:URLRequest = new URLRequest(img);
            loader.load(req);
        }

        public function ready(ev:Event):void
        {
            var key:String = ev.target.contentLoaderInfo.url;
            trace("[MultiImgLoader] ready " + key);
            images.push( { key : ev.target } );
            if (img_array.length > images.length)
            {
                for (var i:int = 0; i < img_array.length; i++ )
                {
                    if (img_array[i] == key)
                    {
                        load(img_array[i+1]);
                    }
                }
            }
        }

        public function progress(ev:ProgressEvent):void
        {
            trace(ev.bytesLoaded);
        }

    }

}

Ответы [ 3 ]

6 голосов
/ 24 июня 2009

Хорошо, понял. Это:

loader.addEventListener(ProgressEvent.PROGRESS, progress);
loader.addEventListener(Event.COMPLETE, this.ready);

следует прочитать это:

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ready);

Я даже не знаю, почему в Loader-Class есть метод addEvenListener - избыточность кому-нибудь?

3 голосов
/ 18 апреля 2012

У меня была такая же проблема со слабым слушателем, обычный работает нормально

//BUG event not fired
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler,false,0,true);  

//OK event fired
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);   
1 голос
/ 27 августа 2009

У меня было нечто похожее, но затем я изменил свой загрузчик с нового Loader () на URLLoader (), и он работал с loader.addEventListener.

Эта страница помогла мне: http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...