gpt4 book ai didi

java - 以较低速度淡出文本

转载 作者:行者123 更新时间:2023-12-01 23:48:52 26 4
gpt4 key购买 nike

我想让一组数组淡出,直到附加该组中的最后一个数组对象。我使用 millis() 使每三个对象以较慢的速度淡出!因此,我创建了一个名为 boolean timelag(int time, int number) 的函数,每次我将时间和序列号传递给它,并期望在每创建三个对象后 2 秒后它就会淡出,但是好像什么都没发生

void draw() {
background(255, 255, 255);

for (int i=0; i<zoog.length; i++) {
zoog[i].jiggle();
zoog[i].display();
if(i%3 ==0 && i>=3){
time = millis();
timelag(time,i);
}
}
if(fadeout){
zoog[thatnumber].disappear();
zoog[thatnumber-1].disappear();
zoog[thatnumber-2].disappear();
}
}

我的时滞函数:

boolean timelag(int time, int number){
int thattime = time;
if(millis()-thattime>2000){
thatnumber = number;
fadeout = true;
}
else
fadeout = false;


return fadeout;
}

完整代码在这里

Zoog[]zoog = new Zoog[1];
float count=0;
int xpos =0;
int ypos =0;
String message="haha";
int ntextsize = 20;
int nopacity =200;
int thistime = 0;
int thiscount = 0;
int time =0;
int number =0;
boolean fadeout = false;
int thatnumber=0;


//Zoog zoog;

void setup() {
size(400, 400);
xpos = int(random(width/2-200, width/2+40));
ypos = int(random(height/2, height/2-40));
zoog[0] = new Zoog(xpos, ypos, message, nopacity);
}

void draw() {
background(255, 255, 255);

for (int i=0; i<zoog.length; i++) {
zoog[i].jiggle();
zoog[i].display();
if(i%3 ==0 && i>=3){
time = millis();
timelag(time,i);
}
}
if(fadeout){
zoog[thatnumber].disappear();
zoog[thatnumber-1].disappear();
zoog[thatnumber-2].disappear();
}
}


void mousePressed() {
count = count + 1;
// int thiscount = 0;
if (count%3 ==0) {
xpos=int(random(30, width-30));
ypos=int(random(10, height-10));
}
else {
ypos = ypos+50;
}


nopacity = int(random(100, 255));
// text(message, xpos, ypos);
Zoog b = new Zoog(xpos, ypos, message, nopacity);
zoog =(Zoog[]) append(zoog, b);

}

boolean timelag(int time, int number){
int thattime = time;
if(millis()-thattime>2000){
thatnumber = number;
fadeout = true;
}
else
fadeout = false;


return fadeout;
}

class Zoog {
int x;
int y;
String thatmessage;

int opaci =0;

Zoog(int xpo, int ypo, String thismessage, int opa) {
x = xpo;
y = ypo;
thatmessage = thismessage;

opaci = opa;
}

void jiggle() {

x = x+int(random(-2, 2));
y = y+int(random(-2, 2));
}

void display() {

fill(0, opaci);
text(thatmessage, x, y);
print("x position is "+ x);
print("y position is "+y);
}

void disappear() {
for (int j=0; j<255; j++) {
opaci = opaci -j;
}
}
}

最佳答案

我假设当你写的时候......

if(fadeout) { ... }

你的意思是...

if(timelag()) { ... }

在你的 timelag 函数中,从函数返回 true 或 false 而不是返回一个变量会更具可读性和更快(即使是分钟),除非整个项目一遍又一遍地需要该变量,但事实并非如此看起来确实如此,如果是更改的函数,通常不需要返回值,除非您检查更改是否发生的 boolean 值。

boolean timelag(int time, int number){
//int thattime = time; //You also don't need to create this you
//can simply use the time you're getting in the boolean statement
if(millis()-time>2000){
thatnumber = number;
return true;
}
else {
return false;
}
}

另外,如果您想修复每个zoog淡出所需的时间,您需要给它们全部一个数字,然后在每次调用消失函数时减少该数字。将for循环从消失中取出,并让它在绘制循环中的每次调用中减去一个单位。

void disappear() {
opacity -= somenumber //somenumber is usually something small and you can tweak it.
if (opacity == 0) {
dead = true;
}
}

您可以将绘制循环视为 for 循环。如果嵌入太多单数 for 循环,则会减慢程序的运行速度。现在,您可能甚至没有看到它们淡出,并且您可能无法按照现在编写代码的方式摆脱它们。

当您测试它时,您可以调整该数字,直到找到最佳位置。如果您想对所有这些概念有一个惊人的概述,您可以看看 here 。希夫曼确实深入探讨了我们在这里讨论的各个方面,而且它简短而有趣。

关于java - 以较低速度淡出文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16574881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com