我的項目應用的方法:
類庫:LoaderMax
素材加載 用XML文件配置的(loadAssets.xml):
<?xml version="1.0" encoding="utf-8"?>
<data>
<LoaderMax name="SWFqueue" prependURLs="assets/swf/model/" load="true">
<SWFLoader url="Bulletin.swf" name="Bulletin" autoPlay="false" noCache="true" />
<SWFLoader url="Chat.swf" name="Chat" autoPlay="false" noCache="true" />
<SWFLoader url="Depot.swf" name="Depot" autoPlay="false" noCache="true" />
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
其中的 noCache屬性爲ture表示要產生唯一的緩存 即xx.swf?v=1.01 在URL地址路徑上加參數。
昨天將LoaderMax的源類庫 做了一些修改 loadermax 加載多個SWF文件的時候 如果 沒有設置 estimatedBytes 屬性 在獲取多個SWF文件大小的時候 會在URL地址上加一個隨機參數:即:request.data = new URLVariables("v=" + (_cacheID++) + "&purpose=audit");
我這裏將它改了 :request.data = new URLVariables("v=" + GameGlobal.gameVer);
此修改位置在 :LoaderItem類中的 : override public function auditSize():void {
同時在這個類中的protected function _prepRequest():void { 這個方法也需要修改:
將:_request.data.cacheBusterID = _cacheID++; 修改成:_request.data.v = GameGlobal.gameVer;
GameGlobal.gameVer是版本號 數據是從網頁參數中獲取的(index.html):
<script type="text/javascript">
<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
var swfVersionStr = "10.0.0";
<!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
var xiSwfUrlStr = "playerProductInstall.swf";
var flashvars = {v:"1.02"};
var params = {};
這個index.html是我自己寫的 不過正式上線 這個會是一個動態的網頁文件 flashvars裏面的版本號 將由後臺管理程序來控制。
緩存下的SWF文件