自定义对象/类型Javascript

时间:2013-10-16 17:44:05

标签: javascript canvas types

我正在使用canvs在JS中进行一个简单的2D游戏。

游戏中包含一名骑士,他跑来跑去杀死哥布林,一旦触碰了精灵,就会重置到一个位置。我想为每一个杀死的地精留下血腥的空地。

目前,在我重绘画布之前,我使用之前的X和Y坐标从地精去世的地方画出我的血液飞溅图像。

我想为所有哥布林做这件事。在像Java这样的传统语言中,我会定义一个类型,例如“血”,它有两个属性,X和Y.

然后我使用goblins当前的co-ords每轮创建一个这种类型的新实例,然后将这个类型添加到一个数组中,我循环并且  然后打印此数组中的所有对象。

我是JS的新手,因为它是一种功能语言,所以情况有点不同。我究竟会如何定义这样一种类型,以便我可以在游戏的每次迭代中“新”到数组中?

var blood = {
    x: 0,
    y: 0        
};

这是我当前的血液对象

1 个答案:

答案 0 :(得分:1)

您可以在Javascript中创建“类”作为函数。在函数内使用this.x就像创建一个名为x的成员变量:

var Blood = function() {
    this.x = 0;
    this.y = 0;
}
var blood = new Blood()
console.log(blood.x);

这些不是像Java这样的OO语言的类或类型,只是通过使用Javascript的范围规则来模仿它们的方式。

到目前为止,这里没有太多用处 - 一个简单的对象图也可以正常工作。但是如果你需要在Blood“class”中使用更多的逻辑,比如成员函数等,这种方法可能会很有用。你可以通过修改对象的原型来创建它们:

Blood.prototype.createSplatter = function() {
    return [this.x-1, this.y+1]; // (idk, however you create a splatter)
};
blood.createSplatter();

(Fiddle)

有关Javascript类的更多详细信息,我建议您查看CoffeeScript syntax(向下滚动到“类,继承和超级”)。他们在简化的CS语法和JS翻译中有一些并排的类示例。