2016-09-17 38 views
1

我是一種新的處理,所以忍受着我。我正在創建一個基本的繪圖程序,您可以點擊一個彩色框來獲取該顏色,然後您可以繪製和繪製東西。那麼我已經創建了一個紅色框和一個橡皮擦,所以我決定創建一個藍色框,但是當我點擊它時,它不會將顏色更改爲藍色。我已經試過解決這個問題,但沒有運氣。處理繪圖問題

下面的代碼(注意這個工作最好與Eclipse和進口處理核心https://processing.org/tutorials/eclipse/):

所有的
// note: many imports aren't used yet 
import java.util.ArrayList; 
import java.util.Scanner; 
import processing.core.PApplet; 
import processing.core.PShape; 

import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Main extends PApplet{ 

PShape rectangle; 

int color; 
int color2; 
int color3; 
boolean red = false; 
boolean blue = false; 
boolean green = false; 
boolean eraser = false; 

// needed to create this in order for Eclipse to work 
public static void main(String[] args) { 
    PApplet.main("Main"); 
} 

public void settings(){ 
    size(1280, 720); 
} 

public void setup() { 
    size(1280, 720); 
    smooth(); 
    background(255, 255, 255); 
    noStroke(); 

} 

public void draw() { 
    // nothing here yet 
    if (keyPressed) { 

    } 
    else { 
     color = 0; 
    } 
    fill(0); 

    fill(255, 0, 0); 
    // red square 
    rect(0, 50, 50, 50); 
    fill(0, 10, 255); 
    // blue square 
    rect(0, 100, 50, 50); 
    fill(0); 


} 

public void mousePressed() { 
    if(red) { 
     color = 255; 
     color2 = 0; 
     color3 = 0; 
    } 
    if(eraser) { 
     color = 255; 
     color2 = 255; 
     color3 = 255; 
    } 
    if(blue) { 
     color = 0; 
     color = 10; 
     color = 255; 
    } 
    else{ 
     fill(0); 
    } 
    // check if mouse is in drawing area 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 720) { 
     // change the drawing color 
     fill(color, color2, color3); 
     rect(mouseX, mouseY, 50, 50); 
    } 
    // if red 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 50 && mouseY <= 100) { 
     eraser = false; 
     blue = false; 
     red = true; 
    } 
    // if eraser (note: in top left corner) 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     eraser = true; 
    } 
    // if blue 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     blue = true; 
    } 
} 

// basically the same code for mousePressed 
public void mouseDragged() { 
    if(red) { 
     color = 255; 
     color2 = 0; 
     color3 = 0; 
    } 
    if(eraser) { 
     color = 255; 
     color2 = 255; 
     color3 = 255; 
    } 
    if(blue) { 
     color = 0; 
     color = 10; 
     color = 255; 
    } 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 720) { 
     fill(color, color2, color3); 
     rect(mouseX, mouseY, 50, 50); 
    } 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 50 && mouseY <= 100) { 
     eraser = false; 
     blue = false; 
     red = true; 
    } 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     eraser = true; 
    } 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     blue = true; 
    } 
} 

} 

回答

0

首先,你不應該使用一個名爲color變量。如果你使用的是eclipse,那可能不會導致錯誤,但它會令人困惑,因爲它與Processing的特殊數據類型color相沖突。

其次,看該if聲明:

if(blue) { 
    color = 0; 
    color = 10; 
    color = 255; 
} 

你只是設置color一遍又一遍。也許你打算使用color2color3

if聲明是在兩個不同的地方。如果我將其更改爲color1color2color3,則代碼可以正常工作。