如何动态加载SWC时实现缓存

时间:2014-07-15 07:30:38

标签: actionscript-3 flash caching flashdevelop swc

我在主SWF中加载所有SWC的动态加载,以便更快地加载主swf,但是现在我需要将所有swcs缓存到本地计算机中以加快速度。

private function loadAssets():void 
    {   
        swcObj=new Object();
        swcObj.swcPath='assets/swc/1.swc';
        swcObj.className="Part_0_1";
        swcs.push(swcObj);

        swcObj=new Object();
        swcObj.swcPath='assets/swc/2.swc';
        swcObj.className="0_2";
        swcs.push(swcObj);

        swcObj=new Object();
        swcObj.swcPath='assets/swc/3.swc';
        swcObj.className="0_3";
        swcs.push(swcObj);
    }

然后我使用这个数组来使用我项目中的所有类,但我不知道如何缓存这些swc以便更快地使用,如果有人有想法,请分享。

2 个答案:

答案 0 :(得分:0)

事实上,浏览器会为您预先缓存,您不需要额外的努力。所以,只需正常加载它们,不要担心缓存。但是,您可以激励用户增加本地浏览器缓存,以便可以减少资源加载时等待的时间,但如果用户每天观看3吨YouTube,这将无济于事。

答案 1 :(得分:0)

SWC文件不适用于动态加载。 它们是静态库,可以使用swf链接 mxmlc的-include-librarieslibrary-path选项或 - 因为您似乎在SWC Include Libraries中使用FlashDevelop - SWC LibrariesProject>Compiler options 。 SWC可能包含代码(类),资产(符号/位图/声音......)或两者的组合。

动态加载资源是通过flash.display.Loader完成的 您可以将Loader用作在舞台上添加的简单DisplayObject实例: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Loader.html#includeExamplesSummary

,或使用其ApplicationDomain作为类定义库,允许您随意创建实例: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/ApplicationDomain.html#includeExamplesSummary

在大多数情况下,从浏览器进行缓存就足够了,除非您有非常具体的需求

最后,有不同的方法可以优化加载时间,其中一种方法是使用一个小的swf作为加载器/主菜单,并根据需要加载其他内容,就像你似乎尝试做的那样,但你也可以创建一个具有多个帧的单个swf,将由flash播放器“流式传输”,例如: 第一帧尽可能小,只需要几个kb的闪屏/标识/加载/无论你想要什么,使初始的空白屏幕尽可能短,然后第二帧保持主要内容。您可以使用例如

来扩展此系统
  • 两个级别的预加载器:第一个只有徽标的小框架,第二个带进度条的框架,如果需要还有完整背景
  • 分割内容,如主屏幕/菜单中的菜单,另一个中的游戏玩法,如果您正在制作游戏,以便在您显示菜单时继续加载游戏