Createvector是未定义的p5js

时间:2016-02-28 07:16:08

标签: vector processing

更新:忘了说,我正在使用p5.js编辑器。草图的其余部分可以工作,并加载图像。

当我在浏览器中运行此代码时,我得到的是“createVector未定义”#39;根据p5.js的参考,我使用正确的语法。

任何想法有什么不对?

var img;
var bg = 100;

var velocity = createVector(0,0);
var acceleration = createVector(0,0);

function setup() {
  createCanvas(720, 400);
  img = loadImage("assets/bb8body.png");
}

function keyPressed() {
    if (keyIsPressed === true) {
        if (key === 'd') {
            acceleration++;
            velocity.add(acceleration);

            console.log(vx);
        }
    }
}

function damping(){

}

function draw() {
    keyPressed();
    background(bg);
  image(img, velocity, 0);
  damping();
}

1 个答案:

答案 0 :(得分:2)

我不是100%为什么,但createVector()适用于setup()(不在外面)。 另外,我发现了两个小错误:

acceleration++;

这不起作用,因为js不支持像c ++这样的重载运算符,但你可以使用p5.Vector的add()函数。 此外,代码的其余部分中不存在vx变量。

以下是使用p5.Vector实例修改的代码版本,但为了测试目的,绘制了一个小方框而不是图像。您可以运行以下演示:

var img;
var bg = 100;

var velocity;// = createVector(0,0);
var acceleration;// = createVector(0,0);

function setup() {
  createCanvas(720, 400);
  velocity = createVector(0,0);
  acceleration = createVector(0,0);
  //img = loadImage("assets/bb8body.png");
}

function keyPressed() {
    if (keyIsPressed === true) {
        if (key === 'd') {
            //acceleration++;
            acceleration.add(1,1);
            velocity.add(acceleration);

            //console.log(vx);
            console.log(velocity.x);
        }
    }
}

function damping(){

}

function draw() {
    keyPressed();
    background(bg);
    rect(velocity.x,velocity.y,20,20)
  //image(img, velocity, 0);
  damping();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.22/p5.min.js"></script>