Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57013
  • 博文数量: 23
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-13 09:52
文章分类

全部博文(23)

文章存档

2011年(1)

2009年(22)

我的朋友
最近访客

分类: 系统运维

2009-03-18 13:15:06

向 SWF 文件加载数据的每个函数或方法(除了 XMLSocket.send() 之外)都是异步的:动作结果返回的时间不确定。

在 SWF 文件中使用加载的数据之前,必须检查它是否已被加载。 例如,您不能在同一脚本中加载变量并操作它们的值,因为待处理的数据在加载之前并不存在于该文件中。在下面的脚本中,在您确认变量 lastSiteVisited 已从文件 myData.txt 中加载之前,您不能使用该变量。在 myData.txt 文件中,具有与以下示例相似的文本:

lastSiteVisited=

但如果使用了下面的代码,您将不能跟踪正在加载的数据:

loadVariables("myData.txt", 0);
trace(lastSiteVisited); // undefined

每个函数或方法都有一种特定的技术,您可以使用该技术检查数据是否已被加载。如果使用 loadVariables 函数或 loadMovie 函数,则可以向影片剪辑目标加载信息,并使用 onData 处理函数来执行脚本。如果使用 loadVariables 函数加载数据,则在最后一个变量加载后将执行 onData 处理函数。如果使用 loadMovie 函数加载数据,则当每次 SWF 文件的片段进入 Flash Player 时都会执行 onData 处理函数。

例如,下面的 ActionScript 从 myData.txt 文件中向影片剪辑 loadTarget_mc 加载变量。分配给 loadTarget_mc 实例的 onData() 处理函数将使用变量 lastSiteVisited,该变量从文件 myData.txt 中加载。仅当所有的变量(包括 lastSiteVisited)都已加载,才会进行下面的输出操作:

this.createEmptyMovieClip("loadTarget_mc", this.getNextHighestDepth());
this.loadTarget_mc.onData = function() {
    trace("Data Loaded");
    trace(this.lastSiteVisited);
};
loadVariables("myData.txt", this.loadTarget_mc);

如果使用 XML.load()XML.sendAndLoad()XMLSocket.connect() 方法,则应该定义一个在数据到达时对其进行处理的处理函数。此处理函数是 XML 或 XMLSocket 对象的一个属性,您要为该对象指定一个已定义的函数。当接收到信息时,这些处理函数将被自动调用。对于 XML 对象,使用 XML.onLoad()XML.onData()。对于 XMLSocket 对象,使用 XMLSocket.onConnect()

阅读(586) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~