未捕获的TypeError:调用push()时输入错误

时间:2013-09-26 08:41:30

标签: javascript

我正在尝试模拟canvas上的烟雾。我想创建一个新的烟雾并将其推入puffs数组但我不断收到"Uncaught TypeError: Type error"错误。
谁知道我错过了什么?

var puffs = [];

this.tick = function() {
    var puffLength = puffs.length;
    if ( addPuffs && ( puffLength < maxParticles )) {
        puffs.push({ //THIS ONE IT WHAT GIVES ME THE ERROR
            posX: oPoint.x,
            posY: oPoint.y,
            scale: .1,
            age: 0
        });
    }

    for(var i = 0; i < puffLength; i++) {

        var currentPuff = puffs[i];

        if(currentPuff.age == maxLife) {
            puffs.splice(i, 1);
        } else {
            currentPuff.posX += windX,
            currentPuff.posY += windY,
            currentPuff.scale += growingSpeed,
            currentPuff.age++;
        }

    }

    this.render();

}

1 个答案:

答案 0 :(得分:1)

在提供的小提琴中,addPuffs未定义。您需要根据业务逻辑定义此变量。此外,oPoint.xoPoint.y未定义,还必须根据您的业务逻辑对其进行初始化。

var oPoint = {x:1, y:2}; //declare according to logic
var addPuffs = true; //some logic here
if ( addPuffs && ( puffLength < maxParticles )) {
    puffs.push({ //THIS ONE IT WHAT GIVES ME THE ERROR
        posX: oPoint.x,
        posY: oPoint.y,
        scale: .1,
        age: 0
    });
}

同样在drawImage()上使用canvas时,我认为第一个参数必须是DOM元素,而不是图像的路径。

尝试:

  var img = new Image();
  img.src = "/static/img/particle.png";
  //Omitted code
  ctx.drawImage(img,80,80,1,1);