0

用户 1 从 Flash 打开应用程序,用户 2 从浏览器打开应用程序

  • 用户 1 创建房间 A
  • 用户 2 加入房间 A
  • 用户 2 离开房间 A

...我得到这个错误:

[ RECEIVED ]: <msg t='sys'><body action='uCount' r='2' u='1'></body></msg>, (len: 60) [ RECEIVED ]: <msg t='sys'><body action='userGone' r='89'><user id='91' />, (len: 73) TypeError: Error #1009: Cannot access a property or method of a null object reference. at it.gotoandplay.smartfoxserver.handlers::SysHandler/handleUserLeaveRoom()[/Users/Lapo/Documents/Flex Builder 2/SmartFoxClient_AS3/src/it/gotoandplay/smartfoxserver/handlers/SysHandler.as:353] at Function/http://adobe.com/AS3/2006/builtin::apply() at it.gotoandplay.smartfoxserver.handlers::SysHandler/handleMessage()[/Users/Lapo/Documents/Flex Builder 2/SmartFoxClient_AS3/src/it/gotoandplay/smartfoxserver/handlers/SysHandler.as:84] at it.gotoandplay.smartfoxserver::SmartFoxClient/xmlReceived()[/Users/Lapo/Documents/Flex Builder 2/SmartFoxClient_AS3/src/it/gotoandplay/smartfoxserver/SmartFoxClient.as:327] at it.gotoandplay.smartfoxserver::SmartFoxClient/handleMessage()[/Users/Lapo/Documents/Flex Builder 2/SmartFoxClient_AS3/src/it/gotoandplay/smartfoxserver/SmartFoxClient.as:1418] at it.gotoandplay.smartfoxserver::SmartFoxClient/handleSocketData()[/Users/Lapo/Documents/Flex Builder 2/SmartFoxClient_AS3/src/it/gotoandplay/smartfoxserver/SmartFoxClient.as:1401]

  • 如果用户 2 创建房间 A
  • 用户 1 加入房间 A
  • 用户 2 离开房间 A

...当用户 2 退出房间时没有错误。

所以,我有一个将用户连接到服务器的按钮,当用户连接并加入“大厅”房间时,他可以加入并创建房间,当 2 名玩家加入时,游戏开始。

我正在将 SFS Basic 与 AS3 一起使用,我不会在任何地方调用 getRoomList() 并且我需要提到我有另一个与此类似的应用程序正在正常工作(相同的 api、相同的服务器、类似的功能流)。

尝试了不同的解决方案,但没有帮助...

我不明白为什么我在这个应用程序上得到这个错误,而另一个工作正常,为什么我只有在创建房间时才会收到这个错误,而且我希望在任何用户创建房间时都会收到错误,而不仅仅是用户 1创建房间。

任何帮助或建议都非常感谢,我几天来一直在努力解决这个问题......

更新:如果我创建了一个 3 人房间(游戏室)并且游戏没有开始并且我连接了 2 名玩家然后他们断开连接一切都很好,但是如果游戏开始然后他们断开连接我得到这个错误。

4

1 回答 1

1

我发现了问题,我希望我能用这个答案节省一些时间:

问题是这一行:

sfs.getActiveRoom().getUserList().sort(randomize)[0].getName();

我正在使用此代码生成一个随机用户作为第一个播放的用户,但实际上我似乎正在更改用户列表数组(通过对其进行排序)(sfs.getActiveRoom().getUserList())以及用户何时离开房间。繁荣!错误!空对象!

所以,我改变了这个:

   var userList:Array = new Array();
   userList = userList.concat(sfs.getActiveRoom().getUserList());
   var randomUser = userList.sort(randomize)[0].getName();
于 2015-06-15T20:23:18.467 回答