1

我搜索了很多,除了基于时间线的预加载器或外部预加载器(加载外部 swfs)之外找不到任何东西。

我正在寻找预加载的文档类,它甚至为第一帧导出了库符号。

请指教。

我在文档类中也有私有变量,引用那些导出的剪辑。

public var menu:Menu;
public var brand:MovieClip;
public var container:MovieClip;
public var background:Background;
public var intro:Intro;
public var language:Language;

加上在帧 1 上由 flash 本身导出的大量剪辑,例如 Combobox,(下面的屏幕截图)

在此处输入图像描述

4

1 回答 1

2

您只需要使用root.loaderInfo'sbytesTotalbytesLoaded属性。

当它们彼此相等时,您已经加载了 100% 的 SWF,您可以相应地管理接下来应该发生的事情。

样本:

package
{

    import flash.display.Sprite;
    import flash.events.Event;


    /**
     * Document class.
     */
    public class Document extends Sprite
    {

        // Constructor.
        public function Document()
        {
            addEventListener(Event.ENTER_FRAME, _loadStatus);
        }


        // Manage the current status of the preloader.
        private function _loadStatus(e:Event):void
        {
            if(loadPercent >= 1)
            {
                removeEventListener(Event.ENTER_FRAME, _loadStatus);

                beginApplication();
            }
        }


        // Load complete, being the application here.
        protected function beginApplication():void
        {
            trace("Loaded.");
        }


        // Returns a number representing current application load percentage.
        protected function get loadPercent():Number
        {
            return root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal;
        }

    }

}

我还必须注意,在第一帧导出所有库符号是个坏主意 - 您需要确保它们不会在第一帧导出。

奖励:将上述类作为实际文档类的基类,可以形成一个非常整洁的应用程序入口点(您开始编写应用程序的地方):

public class MyDocument extends Document
{

    override protected function beginApplication():void
    {
        // Application has loaded.
        // Your initialize code here.
        //
        //
    }

}
于 2012-06-05T08:04:37.337 回答