Javascript ProcessingJS更改线条不透明度
我是处理JS/JS的初学者,但我似乎无法让它正常工作。我正在使用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
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()。看看这个: