我想要做的是,声明一个具有Image属性的类。然后我声明该类的Object并调用draw函数。但是它不起作用....为什么?这是我的.html页面中的processing.js部分
<script type="text/processing">
PImage starImage;
void setup(){
size(400,400);
smooth();
starImage = loadImage("star.png");
}
var Star = function(x,y)
{
this.x = x;
this.y = y;
this.img = starImage;
};
Star.prototype.drawStar = function(){
image(this.img,this.x,this.y,50,50);
};
var obj = new Star(50,50);
draw = function(){
obj.drawStar();
};
</script>
但如果我改变了“image(this.img,this.x,this.y,50,50);” to“image(starImage,this.x,this.y,50,50);”,它的工作原理。这个.img中的'starImage'(PImage)的分配似乎不起作用。
答案 0 :(得分:2)
我认为您的主要问题是您在加载Star
starImage
之前创建了PImage
个对象。尝试重构代码,以确保在创建Star
对象之前加载图像。
以下是您在纯加工方面的表现:
PImage starImage;
Star obj;
void setup() {
size(400, 400);
smooth();
starImage = loadImage("star.png");
obj = new Star(50, 50, starImage);
}
class Star{
float x;
float y;
PImage img;
public Star(float x, float y, PImage img){
this.x = x;
this.y = y;
this.img = img;
}
public void drawStar(){
image(this.img, this.x, this.y, 50, 50);
}
}
void draw(){
obj.drawStar();
}
这也应该在Processing.js中起作用。请注意,在 加载图像之后,才会创建Star
对象。