Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 as3在文档类中自预加载(内部)_Actionscript 3_Flash_Preloader - Fatal编程技术网

Actionscript 3 as3在文档类中自预加载(内部)

Actionscript 3 as3在文档类中自预加载(内部),actionscript-3,flash,preloader,Actionscript 3,Flash,Preloader,我在谷歌上搜索了很多,除了基于时间轴的预装程序或外部预装程序(加载外部主权财富基金)外,什么都找不到 我正在寻找预加载的文档类,它甚至为第一帧导出了库符号 请告知 我在document类中还有私有变量,它引用了那些导出的剪辑 public var menu:Menu; public var brand:MovieClip; public var container:MovieClip; public var background:Background; public var intro:Intr

我在谷歌上搜索了很多,除了基于时间轴的预装程序或外部预装程序(加载外部主权财富基金)外,什么都找不到

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

请告知

我在document类中还有私有变量,它引用了那些导出的剪辑

public var menu:Menu;
public var brand:MovieClip;
public var container:MovieClip;
public var background:Background;
public var intro:Intro;
public var language:Language;
加上flash本身在第1帧上导出的大量剪辑,例如Combobox(下面的屏幕截图)


您只需要使用
root.loaderInfo
ByTestTotal
bytesLoaded
属性

当它们彼此相等时,您已经加载了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;
        }

    }

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

好处:将上面的类作为实际文档类的基类,可以创建一个非常整洁的应用程序入口点(从这里开始编写应用程序):


看看我对一个类似问题的回答:谢谢你的回答,但问题是如果我将剪辑设置为导出到第2帧,我会得到各种各样的错误,例如,我在文档类中有私有变量引用这些剪辑,编辑了我的问题以包含它们。@iPhoneDeveloper Yep,因此,为了避免这些错误,您必须在加载文档后初始化一个包含这些引用的类,这将避免这些错误。在第一帧上导出的所有内容都会发生这样的情况:预加载程序(如果您有)甚至可能在文档加载90%之前都不会显示,因为其他所有内容都会阻塞加载。如果在第一帧中导出所有内容,您也可以不使用预加载程序。同意,但我必须更改每个剪辑,如果我喜欢一个或两个剪辑,没有问题,但我注意到flash本身的许多组件将自身导出到第1帧,甚至将其移动到第2帧都会引入更多错误,将屏幕截图附加到question@iPhoneDeveloper您可以按住shift键并选择符号,然后右键单击->属性以一次修改多个符号。或者,您可以转到File->ActionScript设置,然后更改标记为“Export classes in frame[1]”的字段的值。
public class MyDocument extends Document
{

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

}