我正在浏览器中编写游戏,而我正在尝试查找如何在浏览器中使用.emit()
和.on()
方法。我无法让它工作,因为我收到.emit()
未定义的错误。任何人都可以解释如何让它发挥作用吗?
例如,我正在尝试为我的游戏实现以下API:
var game = new Game();
game.on('start', function(){
draw_players();
});
game.on('end', function(){
display_end_game_message();
});
etc.
在游戏功能中,我发布了start
:
function Game(){
function connect(){
emit('start');
}
}
如何让emit()
和on()
在浏览器中工作?
答案 0 :(得分:1)
您的问题是emit
和on
是节点库附带的特定于节点的函数,仅在通过Node.js运行您的javascript服务器端时才起作用
如果你想用节点编写你的游戏,你应该试用Browserify来转换你的node.js脚本以在浏览器上运行。
答案 1 :(得分:0)
您可以使用浏览器here中的事件来代替emit
和on
。
它们的工作方式相似。只有他们有addEventListener
而不是on
,还有dispatchEvent
而不是emit
对于他们的工作,您将需要创建某种DOM元素
这是您的实现示例
const gameEl = document.createElement('div')
const gameStartEvent = new Event('game-start')
gameEl.addEventListener('game-start', () => {
draw_players();
})
function Game(){
function connect(){
gameEl.dispatchEvent(gameStartEvent);
}
}