将值传递到p5的画布,实例化

时间:2017-10-10 09:03:17

标签: javascript class canvas instantiation p5.js

假设我在一个页面上有几张p5画布,我选择使用实例化将它们分开。因为许多方法将执行相同的操作,所以我创建了一个超类。它看起来像这样:

var BasicCanvas = function(p) {
    p.setup = function() {
        p.createCanvas(100, 100);
        p.background(0);
    }

    p.draw = function() {
    }
}

我必须创建一个子类并将其传递给一个新的p5对象,如下所示:

var myP5 = new p5(BasicCanvas);

我应该如何创建我的super的子类,以便将它传递给p5构造函数?我理想的代码设置如下:

var super = function(p) {
    p.setup = function() { creation }
}

var sub1 = function(p) {
    p.draw = function() { circles }
}

var sub2 = function(p) {
    p.draw = function() { squares }
}

var myP5 = new p5(sub1);
var myP52 = new p5(sub2);

但是来自Java,我在解决这些差异方面遇到了一些困难。你能帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

var superFunction = function(p) {
    p.setup = function() {
        p.createCanvas(200, 150)
        p.noStroke()
    }
}

var sub1 = function(p) {
    superFunction(p)
    p.draw = function() {
        p.background(50)
        p.fill("blue")
        p.rect(20,20,50,50)
    }
}

var sub2 = function(p) {
    superFunction(p)
    p.draw = function() {
        p.background(100)
        p.fill("red")
        p.rect(20,20,50,50)
    }
}

var myP5 = new p5(sub1)
var myP52 = new p5(sub2)

注意:super是Javascript中的保留关键字