完全控制多个Javascript对象
我正在用javascript编写一个生成和终止形状的游戏。因此,我需要完全控制这些正在生成的形状。我想做以下几点,但我不确定如何做:完全控制多个Javascript对象,javascript,function,constructor,Javascript,Function,Constructor,我正在用javascript编写一个生成和终止形状的游戏。因此,我需要完全控制这些正在生成的形状。我想做以下几点,但我不确定如何做: 我想定义一个构造函数Shape 然后,我想做一个函数,这样当调用它时,它将应用于所有现存的形状,并且能够更改每个属性。(例如,我调用函数moveAll(),所有形状的this.y都会增加一个。) 我还希望能够使用函数终止特定的形状,或者使用函数添加形状 我的主要问题是: var x = new Shape(); var y = new Shape(); ...
- 我想定义一个构造函数
Shape
- 然后,我想做一个函数,这样当调用它时,它将应用于所有现存的
,并且能够更改每个属性。(例如,我调用函数形状
,所有形状的moveAll()
都会增加一个。)this.y
- 我还希望能够使用函数终止特定的
,或者使用函数添加形状
形状
var x = new Shape();
var y = new Shape();
...
我不想制造一百万个变量。我需要一种方法,使吨的形状一次,仍然能够控制每一个单独的。如果我制作了一个数组,我将如何单独控制所有内容
任何有帮助的,我只需要一个基础来理解构造函数的概念。提前谢谢 您可以制作一组形状:
let shapes = []
// this will create 6 shapes
for(let i of [0,1,2,3,4,5]) {
shapes.push(new Shape())
}
如果形状具有id
,则可以终止它:
// incrementing id counter
let id = 0
// x and y are optional starting positions
function Shape(x, y) {
this.id = id++
this.y = y || 0
this.x = x || 0
}
// remove the shape from the array
function terminate(id) {
shapes = shapes.filter(shape => shape.id !== id)
}
// or add a shape
function spawn() {
shapes.push(new Shape())
}
现在你有了你的形状
移动所有形状的最简单方法如下:
function moveAll() {
shapes.forEach(shape => shape.y++)
}
此操作的运行时间将随着形状数量的增加而增加
根据请求更新了moveAll
旁注:您可能想继续阅读我们的JavaScript书籍/文章,至少要读到数组。如果你需要更多关于构造器的信息-应该让你有一个体面的开始。。。(您可能正在查找相同“类型”的对象的构建列表,但不确定)在moveAll()中,您需要将“shape”更改为“shapes”,否则名称不正确consistent@AssafiCohen-阿拉齐不,我不这么认为。它正在“shapes”数组中的每个“shape”上迭代。那么它不应该大写吗?@AssafiCohen Arazi no.看一看。@AssafiCohen Arazi我可以在回调中将
shape
重命名为foo
,它仍然可以工作。
function moveAll() {
shapes.forEach(shape => {
if(shape.type === true) {
shape.y++
} else {
shape.y--
}
})
}