2016-09-27 57 views
0

我在Java处理中创建了一个基本的绘图程序,我有两种颜色(以及橡皮擦),并且我刚创建了一种新颜色(绿色)。由于某些原因,当我点击绿色时,它不会改变颜色。谢谢! (注意,我在Eclipse中运行这个程序时导入了处理,如果你打算只使用处理,把int颜色改为color1。除去主函数,用PApplet.main(“main” ),和你应该是好),如果你wan't在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; 

String file = ""; 

char letter; 

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

boolean saving = 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() { 

    if (keyPressed) { 

     if (key == 'c') { 
      background(255, 255, 255); 
     } 

     if (key == 's') { 
      save("Drawing.tif"); 

     } 

    } 
    else { 
     color = 0; 
    } 
    fill(0); 
    text("Press 'c' to clear the screen", 50, 700, 200, 50); 
    text("Press 's' to save", 250, 700, 200, 50); 

    fill(255, 0, 0); 
    // red square 
    rect(0, 50, 50, 50); 
    fill(0, 10, 255); 
    // blue square 
    rect(0, 100, 50, 50); 
    fill(0, 255, 40); 
    // green square 
    rect(0, 150, 50, 50); 
    fill(255, 255, 0); 
    // yellow square 
    rect(0, 200, 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; 
     color2 = 10; 
     color3 = 255; 
    } 
    if(green){ 
     color = 0; 
     color2 = 255; 
     color3 = 40; 
    } 
    else{ 
     fill(0); 
    } 
    // check if mouse is in drawing area 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 680) { 
     // 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; 
     green = false; 
     red = true; 
    } 
    // if eraser (note: in top left corner) 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     green = false; 
     eraser = true; 
    } 
    // if blue 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     green = false; 
     blue = true; 
    } 
    // if green 
    if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
     eraser = false; 
     red = false; 
     blue = false; 
     green = 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; 
     color2 = 10; 
     color3 = 255; 
    } 
    if(green){ 
     color = 0; 
     color2 = 255; 
     color3 = 40; 
    } 
    else{ 
     fill(0); 
    } 
    // check if mouse is in drawing area 
    if (mouseX >= 50 && mouseX <= 1280 && mouseY >= 0 && mouseY <= 680) { 
     // 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; 
     green = false; 
     red = true; 
    } 
    // if eraser (note: in top left corner) 
    if (mouseX >= 0 && mouseX <= 50 && mouseY >= 0 && mouseY <= 50) { 
     red = false; 
     blue = false; 
     green = false; 
     eraser = true; 
    } 
    // if blue 
    if (mouseX >= 0 && mouseX <=50 && mouseY >= 100 && mouseY <= 150) { 
     eraser = false; 
     red = false; 
     green = false; 
     blue = true; 
    } 
    // if green 
    if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
     eraser = false; 
     red = false; 
     blue = false; 
     green = true; 
    } 
} 

} 
+0

删除Java标记:这是一个处理问题,而不是Java问题。是的,语言是相关的,但它们并不相同。 –

回答

0

就像我在your previous question说,你真不该”使用名为color的变量。它可能在日食中适合你,但它很混乱。至少它让我们很难帮助你。当你处于这种状态时,你应该注意诸如未使用的导入语句之类的东西。另见:How to create a Minimal, Complete, and Verifiable example

要找出这样的问题,你必须做一些调试。我要检查的第一件事是:代码是否在mousePressed()函数中输入了您的绿色if声明?所以,我想补充一个println()声明if语句中,就像这样:

if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 
    println("here"); 
    eraser = false; 
    red = false; 
    blue = false; 
    green = true; 
    } 

运行该程序,然后单击绿色广场,我们看到这款if语句是从来没有进入。这绝对是可疑的,所以让我们在if语句本身仔细一看:

if (mouseX >= 0 && mouseY <= 50 && mouseY >= 150 && mouseY <= 200) { 

注意什么?如果没有,请大声读出来。

第二次检查是比较mouseY。看起来你打算使用mouseX