我正在使用Phaser 3创建一个多人游戏,我创建了一个Socket.js文件,其中我创建了一个websocket实例,并定义了用于侦听websocket事件的函数。
let websocket;
const url = "wss://abc/dev";
export const socketInit = () => {
websocket = new WebSocket(url);
websocket.onopen = (evt) => {
onOpen(evt);
};
websocket.onclose = (evt) => {
onClose(evt);
};
websocket.onmessage = (evt) => {
onMessage(evt);
};
websocket.onerror = (evt) => {
onError(evt);
};
};
export const sendMessage = (message) => {
console.log("SENT: " + JSON.stringify(message));
websocket.send(JSON.stringify(message));
};
const onOpen = (evt) => {
if (websocket.readyState === 1) {
console.log("WEBSOCKET CONNECTED");
}
};
const onClose = (evt) => {
console.log("CLOSE", evt);
};
const onMessage = (evt) => {
console.log(evt.data);
};
const onError = (evt) => {
console.log("Error", evt);
websocket.close();
};我有另一个名为mainScene.js的文件,在该文件中,我希望获取onMessage函数接收的数据。我想不出如何将数据传送到这个文件。
发布于 2022-11-10 10:01:13
取决于您想要传递数据的方式。如果您只是想将数据传递到当前场景。(而且只有一个场景,或者至少这个场景总是活动/当前的)
您可以简单地在场景中调用一个函数(例如passData__),如下所示:
// I assume the mainScene.js could look something like this
class MainScene extends Phaser.Scene {
...
passData(data){
// ... do something with the data
}
}
// from the file containing the socket script ...
// ... and if the game variable of the Phaser.Game is defined globaly.
const onMessage = (evt) => {
game.scene.keys.MainScene.passData(evt.data);
};顺便说一下:有一些很好的例子,如何用相位就像这个创建一个多人游戏,它是过时的,但应该包括基本的内容。
https://stackoverflow.com/questions/74386031
复制相似问题