0

我有几个使用 AS 1/2 根据 xml 数据为状态图着色的 swf。这工作了几年,但现在 xml 文件已更新。swfs 不会加载新信息。就像他们曾经做过一次,现在已经一成不变了。我已经搜索了一周并尝试了几个缓存破坏者,但没有一个奏效。我尝试过的大多数事情都是基于向 xml 加载语句添加日期/时间戳。这些要么没有效果,要么破坏了应用程序。这是代码:

var dp = new Array();
dp_xml = new XML();
dp_xml.ignoreWhite = true;
dp_xml.load('dplaws.xml');
dp_xml.onLoad = function(sucess) {
        if (sucess) {
                parseFile(dp_xml);
                showArray();
        }
};



function Map(state, category, qid, question, response) {
        this.state = state;
        this.category = category;
        this.qid = qid;
        this.question = question;
        this.response = response;

        if((substring(response,1,3)=="Yes") && (qid == "b")) {
            myColor = new Color(state);
            myColor.setRGB(0xA2B5CD);
        } else if((substring(response,1,3)!="Yes") && (qid == "b")) {
            myColor = new Color(state);
            myColor.setRGB(0xcccccc);
        }
}


function parseFile(xmlDoc_xml) {
        temp = new Array();
        for (var a = 0; a<xmlDoc_xml.firstChild.childNodes.length; a++) {
                for (var b = 0; b<xmlDoc_xml.firstChild.firstChild.childNodes.length; b++) {
                        temp[b] = xmlDoc_xml.firstChild.childNodes[a].childNodes[b].firstChild.nodeValue;
                }
                n = new Map(temp[0], temp[1], temp[2], temp[3], temp[4]);
                dp.push(n);
        }
}


function showArray(){
for (var z = 0; z<dp.length; z++) {
        trace(dp[z].state);
        trace(dp[z].category);
        trace(dp[z].question);
        trace(dp[z].response);
        trace(dp[z].qid);
}
}

谢谢你的帮助,黛比

4

1 回答 1

0

你需要知道三件事。

首先,您需要确保加载最新版本的 SWF 文件以引用新的 xml。只需更改文件名或在 swf 扩展名的末尾添加缓存破坏器查询,例如map.swf?vers=2

其次,您需要检查 Flash 文件是否实际检索到已更新的正确且新的 XML 文件。

最后,我知道这听起来很傻,但在浏览器中打开 XML 文件并确认它是正确的。例如,直接查看它,例如www.mydomain.com/dplaws.xml。我遇到了很多服务器上的文件不是最新的或服务器本身正在缓存文件的情况。至少对于后者,您可以将其隔离为服务器的问题。

直接检查 XML 文件,例如www.mydomain.com/dplaws.xml并添加一个查询以结束,例如此处(可以是任何内容)www.mydomain.com/dplaws.xml?cache=test9393。附加查询后,它应该从服务器获取最新版本。

现在,一旦确认上述内容,请使用 Chrome 并打开Developer Tools。转到网络选项卡并检查您的闪存是否使用最新版本。您可以看到,一旦 SWF 已加载,接下来的查询之一应该是 XML 文件。查看它是否引用了新的 XML 并附加了缓存破坏器查询。

当我按照上述步骤操作时,它通常对我有用。我希望它也能帮助你。

于 2013-03-20T10:26:02.603 回答