Processing 正在处理,椭圆是否不跟随alpha值? 类粒子{ PVector速度,位置;//每个粒子的PVector变量。 Particle(){//Constructor-每个粒子的随机位置和速度。 速度=新PVector(随机(-0.5,0.5),随机(-0.5,0.5)); 位置=新PVector(随机(0,宽度),随机(0,宽度)); } void update(){location.add(velocity);}//运动方法。 void edge(){//粒子的包围盒。 如果(location.x>width){location.x=0;} 如果(location.xheight){location.y=0;} 如果(location.y

Processing 正在处理,椭圆是否不跟随alpha值? 类粒子{ PVector速度,位置;//每个粒子的PVector变量。 Particle(){//Constructor-每个粒子的随机位置和速度。 速度=新PVector(随机(-0.5,0.5),随机(-0.5,0.5)); 位置=新PVector(随机(0,宽度),随机(0,宽度)); } void update(){location.add(velocity);}//运动方法。 void edge(){//粒子的包围盒。 如果(location.x>width){location.x=0;} 如果(location.xheight){location.y=0;} 如果(location.y,processing,ellipse,extrapolation,Processing,Ellipse,Extrapolation,您将不得不发布一个。请注意,这不应该是您的整个草图,只有几行硬编码行,因此我们都使用相同的代码。我们应该能够将您的代码复制并粘贴到我们自己的机器中,以发现问题。此外,请尝试正确格式化您的代码。您的缩进不足使您的代码难以阅读。 话虽如此,我可以试着在一般意义上提供帮助。首先,你打印出a的值,但你没有告诉我们它的值是什么。它的值是你所期望的吗?如果是,你是在绘制椭圆之前清除先前的帧,还是在先前绘制的椭圆之上绘制它们?你是在绘制椭圆吗代码中的其他地方 以空白草图重新开始,并添加足够的线条来显示问题。以

您将不得不发布一个。请注意,这不应该是您的整个草图,只有几行硬编码行,因此我们都使用相同的代码。我们应该能够将您的代码复制并粘贴到我们自己的机器中,以发现问题。此外,请尝试正确格式化您的代码。您的缩进不足使您的代码难以阅读。

话虽如此,我可以试着在一般意义上提供帮助。首先,你打印出
a
的值,但你没有告诉我们它的值是什么。它的值是你所期望的吗?如果是,你是在绘制椭圆之前清除先前的帧,还是在先前绘制的椭圆之上绘制它们?你是在绘制椭圆吗代码中的其他地方

以空白草图重新开始,并添加足够的线条来显示问题。以下是一个示例,您可以从中进行操作:

stroke(0);
填充(0);
椭圆(25,25,25,25);
线(0,25,宽度,25);
冲程(0,128);
填充(0,128);
椭圆(75,75,25,25);
线(0,75,宽度,75);
此代码绘制一条黑线和椭圆,然后绘制一条透明线和椭圆。请对代码中的
a
值进行硬编码,或者添加足够的代码,以便我们能够准确地看到发生了什么

编辑:谢谢你的MCVE。你更新的代码仍然有问题。我不理解这个循环:

for(Particle other:p){//对于ArrayList中的每个粒子。
float d=PVector.dist(location,other.location);//获取任意两个粒子之间的距离。
浮点a=255-d*2.5;//根据距离将变量“a”映射为alpha。例如,如果距离高,d=100,alpha低,a=255-225=30。
println(“任意两个粒子的最小距离=”+d);//调试输出。

如果(d)您可能想看看pushStyle()/popStyle()若要隔离图形样式,以防在不期望的情况下将alpha搞乱。请查看details@GeorgeProfenza感谢您的反馈,我已经测试了push/pop方法,但它不会影响结果。请在交叉帖子之间链接:感谢您的回复。我已经制作了一个更简单的MCVE草图,可以应该更好地突出这个问题。“if(other==this)”帮助解决了我的问题!谢谢。如果我希望粒子在靠近相邻粒子时变得更加不透明之前保持固定的alpha,比如30,该怎么办?@user4985您可以在
if(d)中添加
else
子句