分类: 系统运维
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()
。