所以我试图找出为什么它说display()不是函数,我觉得这可能是完全错误的代码......
另外,我对图像的x和y位置感到困惑?我在哪里定义它们。
这段代码的目的是让一个Stormtrooper png漂浮在屏幕上,我最终希望他在点击时发出声音,并让他旋转(我也难倒) - 现场版可以是在这里看到:https://benjamingibbsportfolio.000webhostapp.com/(这是我的半成品组合,请不要苛刻)
我以不同的方式正确完成了这段代码,我只是学习构造函数atm。我最初很兴奋,因为我以为我终于抓住了'this'关键字,然后一切都崩溃了!
function preload() {
img = loadImage("stormy3.png");
}
function storm(x,y,xSpeed,ySpeed,img) {
this.x = x;
this.y = y;
this.xSpeed = xSpeed;
this.ySpeed = ySpeed;
this.img = img;
this.display = function() {
image(this.img,this.x,this.y);
}
this.move = function() {
this.x = this.x + this.xSpeed;
this.y = this.y + this.ySpeed;
}
this.bounce = function() {
if(this.x > width || this.x < 0) {
this.xSpeed = this.xSpeed * -1;
}
if(this.y > height || this.y < 0) {
this.ySpeed = this.ySpeed * -1;
}
}
}
function setup() {
// TRANSPARENT BACKGROUND*
background(255, 0, 0, 0.4);
//
var myCanvas = createCanvas(1440, 4000);
myCanvas.position(0, 0);
}
function draw() {
// TRANSPARENT BACKGROUND*
clear();
//
storm.display();
storm.move();
storm.bounce();
}
答案 0 :(得分:1)
您已经创建了一个名为storm
的构造函数,它定义了一个名为storm
的类型。但是您还没有创建该类型的实例。
现在,当你这样做时:
storm.display();
storm.move();
storm.bounce();
此代码中的storm
引用了类型,而不是特定实例。这就是您收到错误的原因。你不能使用这样的类型来调用函数,你必须经历一个实例。
要创建实例,您应该使用 new
关键字:
var myStorm =新风暴(100,200 1,2,yourImageHere);
然后您可以使用该实例调用您的函数:
myStorm.display();
myStorm.move();
myStorm.bounce();
一些随机的注释:你的构造函数应该以大写字母开头,这样就可以更容易地区分类型和持有实例的变量。此外,您无法定义img
变量,因此会给您带来问题。
无耻的自我推销:我已经编写了一个关于可用构造函数的教程here。