我有几个swfs使用AS 1/2来基于xml数据着色状态图。这工作了好几年,但现在xml文件已经更新。 swfs不会加载新信息。这就像他们曾经做过一次而现在已经成熟了。我搜索了一个星期,尝试了几个缓存破坏者,但没有一个有效。我尝试过的大部分内容都是基于向xml load语句添加日期/时间戳。这些要么没有效果,要么打破了申请。 这是代码:
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);
}
}
感谢您的帮助, 戴比
答案 0 :(得分: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。转到Network Tab并检查您的闪存是否使用最新版本。您可以看到,一旦SWF加载,下一个查询之一就应该是XML文件。查看它是否引用了新的XML并附加了缓存区查询。
当我按照上述步骤操作时,它通常适用于我。我希望它对你也有帮助。