gpt4 book ai didi

javascript - 在模块模式中创建 "uniform"变量

转载 作者:行者123 更新时间:2023-12-02 19:20:38 25 4
gpt4 key购买 nike

我对模块模式的概念还很陌生。我设法实现了 HTML5 游戏的核心功能,但我找不到一种好方法来使某些变量可用于该游戏的每个功能。

这是一个简短的伪示例,应该可以使其更加清晰:

var Game = {};

Game.player = (function() {

//...

return {
update : update,
draw : draw
};
});

Game.main = (function() {

var player = new Game.player();

// needed by player
var gravity = 1.0,
loop,
canvas,
ctx,
key_inputs;

//...

return {
init : init,
pause : pause,
play : play
};
});

var game = new Game.main();
game.init();

最佳答案

如果您的 Player 函数范围内的代码需要使用您的 Game 函数中声明的一些变量,您有以下三种选择:

  • 将它们移至更高的范围(在本例中为全局范围,因此不建议)
  • 将它们作为参数传递给播放器(这不是很好,因为如果它们在 Game 中发生更改,它们不会在 Player 中更新)
  • Game 中创建一个 getter 函数,将变量的当前状态返回给 Player 函数。

您还需要将 Game 的实例传递给 Player,以便它知道从哪个 Game 获取数据。

这是#3 的示例(我会尝试的一个):

Game.main = (function() {
var player = new Game.player(this);

// needed by player
var gravity = 1.0,
loop,
canvas,
key_inputs;

var getSettings = function () {
return {
gravity: gravity,
loop: loop,
canvas: canvas,
key_inputs: key_inputs
};
};

return {
init : init,
pause : pause,
play : play,
getSettings: getSettings
};
});

关于javascript - 在模块模式中创建 "uniform"变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com