在尝试了几个不同的HTML5框架后,我总是发现纯JS最具吸引力。但是,我不确定我构建它的方式。
目前,我一直在将不同的对象声明为全局变量:
var titlescreen = new Titlescreen();
var fps = new FPSTracker();
var input = new Input();
var background = new Background();
var shops = new Shops();
var chunkhandler = new ChunkHandler();
var explosionhandler = new ExplosionHandler();
var ui = new UI();
var world = new World();
var player = new Player();
var joystick = new Joystick();
我的主要问题是我如何让他们彼此沟通。例如,Player
类只需使用它的名称(world
)即可访问world.functionINeedToUse();
个函数中的一些函数。来自Java背景,这给了我一个非常糟糕的氛围,因为它取决于具有特定名称的这个全局变量的声明。虽然我发现JS是一种更宽容的语言,但这仍然感觉不对。到目前为止,我还没有发现任何问题。
是否有更有效的方法来构建游戏?玩家/世界的问题怎么样?
答案 0 :(得分:0)
如果我了解你,你正在寻找一种有OOP模式的方法,不是吗? 在JS中,您可以使用构造函数和原型定义类。
但是,如果您正在寻找更强大的工具,您应该浏览一下超集,例如CoffeeScript(Ruby / Python语法)或TypeScript(C#/ Java语法)。
答案 1 :(得分:0)
我正在使用原型来声明“类”,就像在Java中调用它一样。
以下文章介绍了如何使用它们:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
另外,我将场景组织为树形结构。因此World
将成为根,而Player
将是World
的孩子。通过这种方式,我不再将它们全部作为全局变量。
形状(世界和玩家)之间的沟通是通过它们之间的关联完成的。
我使用复合模式创建树。所以我定义了一个Shape-prototype和一个Composite-prototype,它扩展了Shape并且有一个子形状列表。 World
和Player
将从Composite
和Shape
延伸