ProcessingJS改变线的不透明度

时间:2014-03-14 23:20:02

标签: javascript processing

我是ProcessingJS / JS的初学者,我似乎无法让它工作。我正在使用processingjs创建圆圈和线条。在创建圆圈的同一个类中,我有以下两个函数:

void showCompanyLines() {
    if (createdLines == false) {
        createdLines = true;
        rawData['company_partners'].forEach(function(partner) {
            stroke( "#000000", myLinesOpacity);
            var partnerInfo = circlesInfo[companyBubbleIds[partner]];
            var partnerX = partnerInfo[0];
            var partnerY = partnerInfo[1];
            var myLocationX = posFinalX;
            var myLocationY = posFinalY;
            line(posFinalX, posFinalY, partnerX, partnerY);
        });
    }
}

void hideCompanyLines() {
    myLinesOpacity = 0;
}

变量myLinesOpacity是全局的。如果可能的话,我想把它变成一个实例变量,但这可以在以后发生。

我唯一的问题是为什么hideCompanyLines不起作用。

干杯!

编辑:对上面的代码进行以下更改后:

void showCompanyLines() {
    if (!createdLines) {
        for (var j = 0; j < rawData['company_partners'].length; j++)
        {
            partner = rawData['company_partners'][j];
            var partnerInfo = circlesInfo[companyBubbleIds[partner]];
            var partnerX = partnerInfo[0];
            var partnerY = partnerInfo[1];
            var myLocationX = posFinalX;
            var myLocationY = posFinalY;
            var cl = new CompanyLine(partnerX, partnerY, myLocationX, myLocationY, 255);
            companyLines.add(cl);// = cl;
            numLines += 1;
        }
    }
    draw();
}

void hideCompanyLines() {
    createdLines = false;
    for( int i=0; i < companyLines.size(); i++) {
        companyLines.get(i).setOpacity(0);
    }
    draw();
}


class CompanyLine {
    int opacity;
    int x, y, w, z;

    CompanyLine(_x, _y, _w, _z, _opacity) {
        this.x = _x;
        this.y = _y;
        this.w = _w;
        this.z = _z;
        this.opacity = _opacity;
    }

    void setOpacity(op) {
        this.opacity = op;
    }

    boolean update() {
        if (this.opacity == 0) {return false;}
    }

    void display() {
        noFill();
        stroke( "#000000", this.opacity);
        line(x, y, w, z);
        console.log ('displaying with this opacity' + this.opacity)
   }
}

我仍然得到同样的错误。基本上,当调用showCompanyLines时,会创建行,然后当调用hideCompanyLines时,它们不会被隐藏(将不透明度设置为0)。

我真的不知道我还能尝试什么 - 在ProcessingJS的逻辑上我必须犯一些错误。

干杯。

2 个答案:

答案 0 :(得分:1)

修改

实际上,你的问题出在其他地方。我在ProcessingJS中编写了以下程序,它没有问题。检查出来并与你的产品进行比较,并在此处提出更多问题:

int opacity = 100;

void setup()
{
  stroke("#000000", opacity);
  strokeWeight(10);

}

void draw()
{
  background(255);
  stroke("#000000", opacity);
  line(0,height/2,width,height/2);
  noLoop();
}

void mouseOver()
{
  opacity = 30;
  loop();
}

void mouseOut()
{
  opacity = 100;
  loop();
}

答案 1 :(得分:0)

我不知道你在做什么...... 但是大多数代码(包括processing.js)是从上到下阅读的,所以当你寻找{{1}时,它实际上还没有被宣布。

请告诉我这是否解决了。