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 人のプレイヤーが参加するとゲームが開始されます。

私は AS3 で SFS Basic を使用しています。どこにも 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 に答える