2016-09-17 5 views
1

나는 새 처리를하기 때문에 나를 참아 준다. 나는 당신이 그 색을 얻으려면 색칠 된 상자를 클릭하고 그릴 수 있고 물건을 넣을 수있는 기본적인 그리기 프로그램을 만들고 있습니다. 글쎄, 이미 빨간 상자 색과 지우개를 만들어서 파란 상자를 만들기로 결정했는데 그것을 클릭하면 파란 색이 변하지 않습니다. 나는 운이 문제를 해결하기 위해 노력했다.그림 그리기 문제

여기 코드 (이 이클립스에서 가장 잘 작동주의하고 프로세싱 코어 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라는 이름의 변수를 사용할 수 없습니다. 그것은 일식을 사용하는 경우 오류가 발생하지 않을 수도 있지만 처리의 특수 color 데이터 형식과 충돌하기 때문에 혼란스러워 할 것입니다.

둘째,이 if 문 보면 : 당신은 그냥 계속해서 또 다시 color을 설정하는

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

. 어쩌면 color2color3을 사용하셨습니까?

if 성명은 두 곳에서 다릅니다. color1, color2color3으로 변경하면 코드가 올바르게 작동합니다.