我正在构建HTML5 Canvas 2d游戏,我的项目中有一些es6类。其中之一是障碍。我想做的就是能够根据给定的类型(例如,小,厚,高等)创建此类的不同实例。
最好的方法是什么?
是否只需在类的构造函数中添加另一个参数并为其命名即可?
还是只是通过给定随机类型值扩展它来创建主类Obstacle的子类(例如SmallObstacle,TallObstacle)?
谢谢。
答案 0 :(得分:0)
您的问题基于您要如何构建和实现数据结构。两个选项都不一定优于其他100%的时间。我将在下面解释每个优点和缺点以及我的个人解决方案。您可以决定哪种方法更可行。
选项1:
优点:
缺点:
选项2:
优点:
缺点:
我的意见: 就我个人而言,我会跳过指定“大”,“中”,“高”,“宽”。取而代之的是,我在实现类时会使用一些逻辑,并根据需要设置高度和宽度。您可以利用如何轻松地指定值,同时还为函数构造函数提供默认值的优势。
这是一个片段示例:
class obstacle {
constructor(x, y, w=150, h=150) {
this.x = x;
this.y = y;
this.width = w; //default is 150
this.height = h; //so it's medium or something
this.sprite = ...; //etc.
}
}
// Initialize 100 obstacles :P
for (let i=0; i<100; i++) {
let x = Math.random() * scene.width;
let y = Math.random() * scene.height;
let foo = new obstacle(x, y);
/* When you want different width and height instead
of the default, construct like this:
let bar = new obstacle(x, y, width, height);
*/
}