FileStream事件未被触发

时间:2014-02-10 06:20:27

标签: actionscript-3 air

要保存和加载角色对象,我在AIR中使用文件流,它被定位为iPad应用程序。

Event.complete没有触发,IOErrorEvent有时会触发,我不知所措。

角色等级http://pastebin.com/pr6LSvMi

由于

-Anim8

1 个答案:

答案 0 :(得分:3)

少数事情:

  1. 不要在其他网站上发布您的代码。直接在问题中发布。这将确保代码可用于StackOverflow,而Pastebin可能会在明天消失,导致此问题在档案中无用
  2. 在AS3中,所有对象(包括函数)名称都应该是lowerCaseCamelCase,类名应该是UpperCaseCamelCase,常量应该是UPPERCASE_UNDERSCORE_SEPARATED,而包名应该是alllowercase。如果你不遵循这些错误,它不会导致任何错误,但它们是标准,我们喜欢在这里指出这些错误。
  3. 您必须始终在加载任何对象之前添加您的事件侦听器(无论是URLLoaderLoaderFileStream等。基本上,那里在添加事件监听器之前加载完成的可能性很小,这意味着事件监听器甚至不会触发(非常罕见,但我已经看到它发生在磁盘读取中)。此外,不要调用{{1} 之后加载完成。后者是我认为你的问题。你在连接完成加载之前关闭了你的连接。
  4. 因此,请从

    中删除FileStream.close()
    fsR.close()

    并将其添加到处理程序fsR.openAsync(fR, FileMode.READ); fsR.addEventListener(Event.COMPLETE, LoadExistingCharacterObject); fsR.addEventListener(IOErrorEvent.IO_ERROR, CreateNewCharacterObject); fsR.close(); LoadExistingCharacterObject。此外,您需要在CreateNewCharacterObject中执行相同的操作。每次使用SaveCharacter时,在加载完成或出错之后 ,您都无法FileStream.openAsync()。如果您使用close,则可以在关闭之后立即关闭它,因为在加载完成时应用程序执行停止(FileStream.open()是同步操作而FileStream.open()是异步的)

    您应该阅读LiveDocs for FileStream