我遇到了一个错误,在尝试启动和运行Cast Game Manager时,我不确定如何解决。我已经能够连接游戏管理员,并获得状态更新。此后,我尝试发送一个PlayerAvailableRequest。接收方更新游戏调试ui,以指示请求已成功,但是随后在尝试将其响应消息发送给发送方时崩溃。在下面,我附上了相关的控制台日志以及GameDebug UI的图片。请让我知道我末端是否缺少某些东西。

 [ 59.643s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":1100,\"requestId\":1}","namespace":"urn:x-cast:com.google.cast.games","senderId":"219:C97BEC14-B8AF-4BD1-855A-C55CEED51E43"}
cast_receiver.js:37  [ 59.650s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_receiver.js:37  [ 59.669s] [cast.receiver.IpcChannel] IPC message sent: {"namespace":"urn:x-cast:com.google.cast.games","senderId":"219:C97BEC14-B8AF-4BD1-855A-C55CEED51E43","data":"{\"type\":1,\"requestId\":1,\"playerToken\":null,\"statusCode\":0,\"errorDescription\":\"\",\"gameplayState\":1,\"lobbyState\":1,\"players\":[{\"playerId\":\":0\",\"playerState\":1,\"playerData\":null}],\"gameData\":null,\"gameStatusText\":\"\",\"gameManagerConfig\":{\"applicationName\":\"Code Cast\",\"maxPlayers\":2,\"version\":\"1.0.0\"},\"extraMessageData\":null}"}
cast_receiver.js:37  [ 59.689s] [cast.receiver.IpcChannel] Received message: {"data":"{\"type\":1,\"requestId\":2}","namespace":"urn:x-cast:com.google.cast.games","senderId":"219:C97BEC14-B8AF-4BD1-855A-C55CEED51E43"}
cast_receiver.js:37  [ 59.696s] [cast.receiver.CastMessageBus] Dispatching CastMessageBus message
cast_games_receiver.js:220 Uncaught TypeError: Cannot read property 'call' of undefined cast_games_receiver.js:220 b.Zbcast_games_receiver.js:221 l.f.EventTarget.dkcast_games_receiver.js:218 b.dispatchEventcast_games_receiver.js:261 Qcast_games_receiver.js:255 cast.receiver.games.j.Clcast_receiver.js:22 ybcast_receiver.js:21 g.dispatchEventcast_receiver.js:33 R.gbcast_receiver.js:22 ybcast_receiver.js:21 g.dispatchEventcast_receiver.js:31 g.hbcast_receiver.js:22 ybcast_receiver.js:21 g.dispatchEventcast_receiver.js:28 g.hb




编辑:我已经将其范围缩小到通过addGameManagerListener使用GameManagerListener。我已经使我的侦听器与示例一样简单,但是仍然崩溃。

Game Manager Listener Object:
MyGame = function () {
};

MyGame.prototype.onPlayerAvailable = function (event) {
    console.log('Player ' + event.playerInfo.playerId + ' is available');
};

MyGame.prototype.onPlayerReady = function () { };
MyGame.prototype.onPlayerIdle = function () { };
MyGame.prototype.onPlayerPlaying = function () { };
MyGame.prototype.onPlayerDropped = function () { };
MyGame.prototype.onPlayerQuit = function () { };
MyGame.prototype.onGetGameManagerStatus = function () { };
MyGame.prototype.onGameMessage = function () { };
MyGame.prototype.onGameLoading = function () { };
MyGame.prototype.onGameRunning = function () { };
MyGame.prototype.onGamePaused = function () { };
MyGame.prototype.onGameShowingInfoScreen = function () { };
MyGame.prototype.onLobbyOpen = function () { };
MyGame.prototype.onLobbyClosed = function () { };

line adding it:
this.mMyGame = new MyGame();
this.mCastGameManager.addGameManagerListener(this.mMyGame);

最佳答案

抱歉-这是因为documentation guide中的错误:


GameManagerListener示例缺少其他方法来
覆盖。
在末尾的分号前有一个“)”
实现GameManager属性的示例。


对于addGameManagerListener,实现https://developers.google.com/cast/docs/reference/receiver/cast.receiver.games.GameManagerListener中列出的GameManagerListener的所有方法。

例如,您需要添加:

MyGame.prototype.onGameMessageReceived = function() {};
MyGame.prototype.onGameDataChanged = function() {};
MyGame.prototype.onPlayerDataChanged = function() {};
MyGame.prototype.onGameDataChanged = function() {};
MyGame.prototype.onGameStatusTextChanged = function() {};


至于为定义的GameManager属性实现回调,请确保没有语法错误,例如

gameManager.onPlayerAvailable = function(event) {
    console.log('Player ' + event.playerInfo.playerId + ' is available');
};


并不是

gameManager.onPlayerAvailable = function(event) {
    console.log('Player ' + event.playerInfo.playerId + ' is available');
});


再次道歉-我们将修复文档。 :)

10-01 10:31