gpt4 book ai didi

java - 处理,在类中单击鼠标重绘

转载 作者:行者123 更新时间:2023-11-30 03:25:42 25 4
gpt4 key购买 nike

我正在尝试通过简单的单击来更改类绘制中的颜色。我尝试打印该声明以查看它是否会重新绘制,但它根本没有重新绘制。点击有效。有谁知道为什么会发生这种情况?这是到目前为止的代码。

Monster firstmonster;
Monster secondmonster;

void setup() {
size(600,400);
firstmonster = new Monster(100,200);
secondmonster = new Monster(300,200);
firstmonster.draw();
secondmonster.draw();
noLoop();
}

class Monster {
float xpos;
float ypos;
boolean isAngry;
int timeAngry;

Monster(float x, float y) {
xpos = x;
ypos = y;
isAngry = false;
timeAngry = 0;
}

void draw() {
if(isAngry = true && timeAngry<60){
print(int(timeAngry));
timeAngry=timeAngry+1;
rectMode(CENTER);
fill(127-timeAngry*5,0,0);
rect(xpos+100,ypos+100,20,100);
fill(255,200,200);
ellipse(xpos+100,ypos+70,60,60);
ellipse(xpos+81,ypos+70,16,32);
ellipse(xpos+119,ypos+70,16,32);
line(xpos+90,ypos+150,xpos+80,ypos+160);
line(xpos+110,ypos+150,xpos+120,ypos+160);
} else {
timeAngry = 0;
rectMode(CENTER);
print(int(timeAngry));
fill(127,0,0);
rect(xpos+100,ypos+100,20,100);
fill(255,200,200);
ellipse(xpos+100,ypos+70,60,60);
ellipse(xpos+81,ypos+70,16,32);
ellipse(xpos+119,ypos+70,16,32);
line(xpos+90,ypos+150,xpos+80,ypos+160);
line(xpos+110,ypos+150,xpos+120,ypos+160);

}
}
void mousePressed(){
poke();
}
void poke(){
isAngry = true;
print(timeAngry);
timeAngry=timeAngry+1;
redraw();
}
}

void mousePressed(){
firstmonster.mousePressed();
}

而且我似乎无法区分这两种模型。如果我放置 firstmonster.poke() 那么第一个和第二个模型颜色都会改变。

最佳答案

您的代码中没有全局 void draw() { .. },因此 redraw 无法触发。将应作为框架一部分绘制的代码移出 setup()。毫不奇怪,安装程序用于一次性安装代码。

void setup() {
size(600,400);
firstmonster = new Monster(100,200);
secondmonster = new Monster(300,200);
noLoop();
}

void draw() {
firstmonster.draw();
secondmonster.draw();
}

应该可以解决问题。

关于java - 处理,在类中单击鼠标重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295266/

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