在没有框架的情况下构建HTML5游戏

时间:2014-10-15 07:35:25

标签: javascript html5 canvas data-structures

在尝试了几个不同的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是一种更宽容的语言,但这仍然感觉不对。到目前为止,我还没有发现任何问题。

是否有更有效的方法来构建游戏?玩家/世界的问题怎么样?

2 个答案:

答案 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并且有一个子形状列表。 WorldPlayer将从CompositeShape延伸