Image 缓冲器Can';t打印一个“;“实时”;一串
我试图使文本逐渐改变颜色 我现在做的是这样的:Image 缓冲器Can';t打印一个“;“实时”;一串,image,buffer,processing,Image,Buffer,Processing,我试图使文本逐渐改变颜色 我现在做的是这样的: void printDaString(){ for(int i = 128; i < 255; i ++){ fontFill(color(i)); print("This is da string!", x, y); delay(10); } } void printDaString(){ 对于(int i=128;i
void printDaString(){
for(int i = 128; i < 255; i ++){
fontFill(color(i));
print("This is da string!", x, y);
delay(10);
}
}
void printDaString(){
对于(int i=128;i<255;i++){
fontFill(颜色(i));
打印(“这是da字符串!”,x,y);
延迟(10);
}
}
使用void fontcull(color-toSet)
更改图像颜色,并执行toSet
color fontColFill=toSet
执行一个循环,其中字符串的每个字母都用一张图像打印[换句话说,我的字体是MsPaint-drawerd font=P,void print(String-toPrint,float x,float y)
替换print
]text
- 如您所知,
如果color color(int value)
介于value
和0
之间,则返回灰度级颜色255
delay(10)
,希望它足以刷新[缓冲区或类似的东西],但什么都没有
程序现在所做的只是渲染最后一个屏幕,所以我看到的只是一个白色的字符串=
有小费吗
另外,由于平滑问题,我选择使用图像作为字体。
P.P.S.解析
inti
作为参数将是一个解决方案,但将是一个巨大的成本 我认为这是因为draw()只在每个循环结束时渲染图像。因此,for循环将完全执行,将颜色设置为255,然后执行返回到draw继续并渲染图像(已为白色)。你需要一个if,它就会工作。我用一个全局变量做了一个例子,但是你可以根据自己的需要调整它。同样要避免延迟,因为同样的原因,它只会挂起程序。您可能想看看表单wiki
int i = 128;
void draw() {
printDaString();
}
void printDaString() {
if (i < 255) {
fontFill(color(i));
print(i);
i++;
}
}
void fontFill(color c) {
fill(c);
ellipse(width/2, height/2, 30, 30);
}
inti=128;
作废提款(){
printDaString();
}
void printDaString(){
如果(i<255){
fontFill(颜色(i));
印刷品(一);
i++;
}
}
空白字体填充(颜色c){
填充(c);
椭圆(宽/2,高/2,30,30);
}
或者更简单:
int i = 128;
void draw() {
i = i<255? i+=1:128;
fontFill(i);
}
void fontFill(int c) {
fill(c);
noStroke();
ellipse(width/2, height/2, 30, 30);
}
inti=128;
作废提款(){
i=i@paddy:我用处理
,我正在使用的语言标记了此线程…我的错误,只是看起来像是一个蹩脚的标记选择,尤其是在图像
和缓冲区
等标记旁边。我不知道存在这样的语言。对不起,您的代码不清楚。您在这里想做什么?(例如,x和y没有定义,因此无法告诉您希望代码实现什么).你能用纯文本描述一下你想让程序做什么以及你实际遇到了什么问题吗?我要做的事情有点复杂,但我明白了。最后我做了一个类,这样我就可以管理所有的事情。也许最后我会把整件事放在一个线程中!很好,这很有帮助。我原以为它更复杂,但现在我明白了这不是我简化的所有代码,所以你可以得到它。实际上有点复杂,因为我可以在draw()
结束之前打印一些内容……这是因为我只想刷新屏幕的一小部分,而不是框架中的所有内容。