Javascript ProcessingJS更改线条不透明度

Javascript ProcessingJS更改线条不透明度,javascript,processing,Javascript,Processing,我是处理JS/JS的初学者,但我似乎无法让它正常工作。我正在使用processingjs创建圆和线。在创建圆的同一类上,我有以下两个函数: void showCompanyLines() { if (createdLines == false) { createdLines = true; rawData['company_partners'].forEach(function(partner) { stroke( "#000000

我是处理JS/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)
   }
}
void showCompanyLines(){
如果(!createdLines){
对于(var j=0;j
我仍然会犯同样的错误。基本上,在调用showCompanyLines时,会创建线,然后在调用hideCompanyLines时,不会使线不可见(将不透明度设置为0)

我真的不知道我还能尝试什么——这一定是我在处理JS逻辑时犯了某种错误


干杯。

我不知道你到底在干什么但是大多数代码(包括processing.js)都是从上到下读取的,所以当您查找
myLinesOpacity
时,它实际上还没有声明

如果这不能解决问题,请告诉我。

编辑:

事实上,你的问题出在别的地方。我在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();
}

MyLinesPacity是在第一行之一声明的全局变量。这是一个巨大的文件(800多行代码),所以我只展示了两个最相关的函数。我想我应该补充一点,这两个函数都是通过鼠标悬停触发器调用的,并且正在被调用(console.log显示它们被正确调用)。你说的“它不工作”是什么意思。到底发生了什么?嗨,Nicolas,我对代码做了一些修改并添加了一些解释。基本上,线条是被创建的,但当我将不透明度设置为0时,它们就不可见了。@EduardoS。在每个方法中对
draw()
的多次调用有什么用?你说他们是用mouseOver方法调用的?另外,确保在draw()方法中调用display()方法。否则鼠标盖就不起作用了。更多当然会更有帮助。我首先创建一个动画来设置画布和几何对象,然后我调用noLoop。在鼠标悬停时,当用户将鼠标悬停在其中一个圆上时,我绘制了连接从初始动画设置的一些圆的线。我希望当用户将鼠标从圆圈上移开时,线条消失。仍然无法继续-my draw()函数正确调用display()函数。谢谢您的代码。对于如何解决这个问题,我有点困惑,我可能只需要重构包含上述两个函数的对象,希望它能工作。谢谢你,伙计。一旦你调用noLoop(),你就需要调用loop(),而不是draw()。看看这个: