在Processing.js中不将'PImage'用作Class属性

时间:2016-01-16 02:34:46

标签: javascript processing processing.js

我想要做的是,声明一个具有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)的分配似乎不起作用。

1 个答案:

答案 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对象。