Skip to content

游戏嵌入 (Game Embed)

游戏状态嵌入脚本,提供将游戏状态嵌入到网页中的能力。

安装

html
<script src="http://your.deployed.domain/embed.min.js"></script>

使用示例

typescript
const gameEmbed = new GameEmbed();

// 监听所有 class 为 .game-badge 的元素,使用其 data-oid 属性作为玩家 ID
gameEmbed.listen('.game-badge', 'oid');

// 也可以直接添加指定元素和玩家 ID
// 若传入 id 为 $xxx,则表示从元素的 data-xxx 属性获取玩家 ID
gameEmbed.append(document.getElementById('specific-player')!, 'player-oId-12345');

// 或使用渲染函数,动态渲染内容
// listen 方法同理:embed.listen('.game-badge', 'oid', (data) => {})
gameEmbed.append((data) => {
  if (data.player && data.room) {
    console.log(`Player ${data.player.name} is in room ${data.room.name}`);
  } else {
   console.log('Player not in a room');
  }
}, 'player-oId-67890');

API 参考

listen(selector: string, playerIdAttr: string): WatchHandle

监听指定选择器的元素,并根据指定的属性获取玩家 ID 进行状态嵌入。

参数类型描述
selectorstringCSS 选择器,用于选择要监听的元素。
playerIdAttrstring元素属性名,用于获取玩家 ID。

返回: WatchHandle 监听句柄,可用于停止监听。

append(el: HTMLElement, playerId: string): void

将指定元素添加到嵌入列表中,并使用指定的玩家 ID 进行状态嵌入。

参数类型描述
elHTMLElement要添加的元素。
playerIdstring玩家 ID,若传入 id 为 $xxx,则表示从元素的 data-xxx 属性获取玩家 ID。

append(render: (data: GameRenderData) => void, playerId: string): void

将指定渲染函数添加到嵌入列表中,并使用指定的玩家 ID 进行状态嵌入。

参数类型描述
render(data: GameRenderData) => void渲染函数,接收游戏渲染数据。
playerIdstring玩家 ID。

GameRenderData

游戏渲染数据接口,包含玩家和房间信息和 logo 等。

属性名类型描述
playerIRoomPlayer | null玩家信息,如果玩家不在房间中则为 null。
roomIRoom | null房间信息,如果玩家不在房间中则为 null。
logostring游戏的 Logo URL。
visitRoom(roomId: string) => void跳转至指定房间的函数。