向 SWF 文件加载数据的每个函数或方法(除了 XMLSocket.send()
之外)都是异步的:动作结果返回的时间不确定。
在 SWF 文件中使用已加载数据之前,必须检查它是否已被加载。例如,您不能在同一脚本中加载变量并操作它们的值。在下面的脚本中,只有确保已从文件 myData.txt
加载了变量 lastFrameVisited
,才能使用该变量:
loadVariables("myData.txt", 0); gotoAndPlay(lastFrameVisited);
每个函数或方法都有一种特定的技术,您可以使用该技术检查数据是否已被加载。如果使用 loadVariables() 或 loadMovie(),则可以向影片剪辑目标中加载信息,并使用 onClipEvent() 处理函数的 data
事件来执行脚本。如果使用 loadVariables() 加载数据,则在最后一个变量加载后将执行 onClipEvent(data)
处理函数。如果使用 loadMovie() 加载数据,则每次 SWF 文件的片断进入 Flash Player 时都会执行 onClipEvent(data)
处理函数。
例如,下面的按钮动作从文件 myData.txt
中向影片剪辑 loadTargetMC
加载变量:
on (release) { loadVariables("myData.txt", _root.loadTargetMC); }
为 loadTargetMC
实例指定的 onClipEvent()
处理函数使用变量 lastFrameVisited
,它是从文件 myData.txt
中加载的。下面的处理函数只有在加载了所有变量(包括 lastFrameVisited
)之后才执行:
onClipEvent(data) { goToAndPlay(lastFrameVisited); }
如果使用 XML.load()
、XML.sendAndLoad()
和 XMLSocket.connect()
方法,则应该定义一个在数据到达时对其进行处理的处理函数。这个处理函数是 XML 或 XMLSocket 对象的一个属性,您要为该对象指定一个已定义的函数。当接收到信息时自动调用这些处理函数。对于 XML 对象,使用 XML.onLoad()
或 XML.onData()
。对于 XMLSocket 对象,使
用 XMLSocket.onConnect()
。
有关更多信息,请参见使用 XML 类和使用 XMLSocket 类。