2014-02-10 210 views

回答

3

幾件事情:

  1. 不要在其他網站上發佈您的代碼。直接在問題中發佈。這將確保代碼只要StackOverflow是可用的,而Pastebin可能會在明天消失,使這個問題在檔案中無用
  2. 在AS3中,所有對象(包括函數)名稱都應該是lowerCaseCamelCase,類名應該是UpperCaseCamelCase,常量應該是UPPERCASE_UNDERSCORE_SEPARATED,包名應該是alllowercase。如果你不遵守這些標準,它不會造成任何錯誤,但它們是標準的,我們希望在這裏指出這些標準。
  3. 您必須始終之前的負載添加事件偵聽器的任何對象(無論是URLLoaderLoaderFileStream等,基本上有一個小的機會,負載將完成添加的事件監聽器之前,這意味着事件監聽器甚至不會觸發(非常罕見,但我已經看到它在磁盤讀取時發生)。此外,請勿調用FileStream.close(),直到之後加載完成後,我相信後者是您的問題。在連接完成之前關閉連接

因此,請刪除fsR.close()

fsR.openAsync(fR, FileMode.READ); 
fsR.addEventListener(Event.COMPLETE, LoadExistingCharacterObject); 
fsR.addEventListener(IOErrorEvent.IO_ERROR, CreateNewCharacterObject); 
fsR.close(); 

並把它添加到處理程序,LoadExistingCharacterObjectCreateNewCharacterObject。此外,您還需要在SaveCharacter中執行相同操作。任何時候你使用FileStream.openAsync(),你不能close的流,直到的負載已經完成或出錯。如果你使用FileStream.open(),你可以關閉它隨即由於當加載完成的應用程序停止執行(FileStream.open()是一個同步的動作,FileStream.openAsync()是異步)

你應該閱讀LiveDocs for FileStream