簡體   English   中英

如何在Flash中使用外部SWF作為預加載器

[英]How to use an external swf as a preloader in Flash

我有一個項目,希望不時使用不同的預加載器,所以我想知道是否有一種方法可以讓我的項目將外部swf用於預加載器?

絕對是這樣,實際上這是非常普遍的做法。

您的外部預加載器文件只需實例化Loader類的實例,然后加載您的有效負載.swf。 在加載有效負載時,您可以偵聽ProgressEvent.PROGRESS並使用它來更新某種負載條或其他內容。 它看起來像這樣:

package
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.net.URLRequest;

    public class Preloader extends MovieClip
    {
        // this loads in your main swf
        public var loader:Loader;

        // this points to the location of your main swf
        public var request:URLRequest;

        // this holds a reference to your main swf once it's been loaded in.
        public var content:MovieClip;

        public function Preloader()
        {
            addEventListener(Event.ADDED_TO_STAGE, addedHandler);

            super();
        }

        // it's a good practice to wait for ADDED_TO_STAGE before you start doing stuff, that way you can avoid certain Null Reference Errors
        protected function addedHandler(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, addedHandler);

            loader = new Loader();
            request = new URLRequest("path/to/your/file.swf");

            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
        }

        // This will fire when your main swf is loaded in.
        protected function completeHandler(e:Event):void {
            loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
            loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);

            trace("Load completed! Now we're going to add the target swf to the timeline:");

            content = MovieClip(loader.content);

            /*
             *      Additional logic can go here to remove your loadbar or etc.
             */ 

        }

        // this will fire if there's a problem with loading in the swf
        protected function errorHandler(e:IOErrorEvent):void {
            trace("Error: the path specified was incorrect. Unable to find that file. Here's the error in full:\n " + e)
        }


        // this will fire constantly while the target swf is being loaded, so you can see how much more you have to load.
        protected function progressHandler(e:ProgressEvent):void {
            var perLoaded:Number = 100* (e.bytesLoaded / e.bytesTotal)
            trace("Percent Loaded: " + perLoaded);

            /*
            *   Additional logic can go here to update your load bar, etc.
            */

        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM