2015-05-18 5 views
1

Я пытаюсь сделать простой щелчок, чтобы изменить цвет в рисовании класса. Я попытался распечатать заявление, чтобы посмотреть, будет ли он повторно рисоваться, но он не перерисовывается вообще. Щелчок работает. Кто-нибудь знает, почему это происходит? Вот код до сих пор.Обработка, перерисовка при щелчке мышью в классе

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(), тогда и первое, и второе изменение цвета модели.

ответ

2

У вас нет глобального 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(); 
} 

Необходимо сделать трюк.

Смежные вопросы