我的意图:
假设您有两个玩家 A 和 B,他们在两台不同的计算机上玩嵌入在其页面中的同一个 Flash 游戏。
如果玩家 A 按“W”跳跃或点击“PLAY”跳跃,玩家 B 应该在浏览器中看到相同的 Action 。
我已经尝试过:
const game = document.getElementById('game');
var e = null;
game.addEventListener('keydown', (event) => {
if (event.keyCode == 37) {
console.log('Left was pressed');
} else if (event.keyCode == 39) {
console.log('Right was pressed');
};
e = event;
});
我已将此事件发送给玩家 B(使用套接字)
e = // get it from player A
game.dispatchEvent(e)
这行不通。我相信我需要某种客户端 selenium 的东西,以便我可以在 html 元素上模拟真实的按键(在我的例子中,它是一个 Flash 游戏)。不过我没找到。
有办法做我想做的事吗?
最佳答案
基本上你可以创建一个新的Event('keydown'),参见this 。在 SO 上,您已经可以看到有关以编程方式引发键盘事件的问题,请参阅 this 。但是,您打算导出事件、发送事件并导入它。据我所知,您需要实现导出和导入。但是,如果您设法正确导出所需的值,那么创建事件应该不会很困难。
但是,我建议您将事件处理与可能由事件触发的函数分开。它比您当前重构代码的方法要明智得多,因此可以执行功能而无需黑客创建事件,然后您只需调用您的功能即可。为此,您需要在 Flash 和 Javascript 之间进行通信,请参阅 here并且,您还可以考虑使用WebSockets获得更好的网络协议(protocol),以帮助您的游戏项目。
关于javascript - 如何使用客户端 javascript 模拟人类行为来玩 Flash 游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60789846/