typescript将特定坐标分配给x和y

时间:2018-03-15 04:35:15

标签: arrays loops typescript

我试图用一个物体来映射我的障碍物。

我正在使用随机随机散布它在地图周围,现在我想硬编码X& Y坐标有一个数字数组,但是typescript只使用X坐标的循环的最后一个值。如何为每个障碍物分配特定数字?

随机生成

module objects {
    export class Obstacles extends objects.GameObject {
        public Start():void {

            this.x = Math.floor(Math.random() * (640) - this.width) + this.halfWidth;
            this.y = Math.floor(Math.random() * (480) - this.width) + this.halfWidth;
            console.log("x " + this.x);
            console.log("y " + this.y);

  }
}

enter image description here

使用数组

指定x值
private _obstX: number [] = [200, 250, 300, 350, 400];

public Start():void {

      for (let count = 0; count < this._obstX.length; count++) {
          this.x = this._obstX[count];
      }

      this.y = Math.floor(Math.random() * (480) - this.width) + this.halfWidth;
      console.log("x " + this.x);
      console.log("y " + this.y);

  }

enter image description here

只分配了一个x值,忽略了数组中的另一个x值

主文件中的代码

private _obstPlanes: objects.Obstacles[];
private _obstNum: number;

public Start(): void {
  this._obstPlanes = new Array<objects.Obstacles>();
  this._obstNum = 5;


  for (let count = 0; count < this._obstNum; count++) {
    this._obstPlanes[count] = new objects.Obstacles(this.assetManager);
  }
}
public Main(): void {
  this._obstPlanes.forEach(obstPlane => {
      this.addChild(obstPlane);
  });
}

1 个答案:

答案 0 :(得分:1)

每次实例化一个新的Obstacles对象时,都会遍历数组_obstX,将x属性设置为数组中的第n个值。您的所有Obstacles的{​​{1}}值都为400,因为x循环的最后一次迭代会将for设置为数组中的最后一个值。

我会将this.x数组移动到主文件,并向_obstX构造函数添加x参数/属性。我现在不确定你的构造函数看起来如何,但可能是这样的:

Obstacles

然后使用:

调用构造函数
constructor(private assetManager: AssetManger, private x: number) {}

这会将new objects.Obstacles(this.assetManager, _obstX.shift()) 中的第一个元素发送到构造函数,并从数组中删除该值。在创建每个_obstX对象时,它将具有数组中的下一个Obstacles值。