Выполнение цветов при использовании мыши для рисования в обработке - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь создать код в процессе обработки, который позволяет запускать определенный цвет при рисовании мышью. Прямо сейчас цвет выбирается случайной функцией, которая случайным образом изменяет число от 1 до 0, а затем на основании того, находится ли значение выше или ниже 0,5, выбран цвет. То, как я собирался делать цветовые прогоны, это иметь цикл for ниже, где выбирается случайное число с плавающей точкой, а затем использовать цветовые функции внутри него, однако, если я помещу это в цикл for в void draw (), это не сработает, потому что это вызывается с частотой кадров. Если я помещаю его в void mouseDragged (), возникает та же проблема, что он вызывается только один раз при каждом перетаскивании мыши.

По сути, я пытаюсь выяснить метод, чтобы один из двух цветов был выбран случайным образом, затем нарисовал этот цвет для определенного количества кадров (при перетаскивании мыши), а затем после этого количества кадров случайным образом выбрал один из снова два цвета и повторите.

Вот код, который у меня есть для рисования прямо сейчас (где цвет определяется случайным образом в каждом кадре):

void setup() {
  size(1000, 1000);
  background(000);
}

void draw() {  
}

void mouseDragged () {
  //assigns random float between 0 and 1 which is used for deciding which color to paint
  float x = random(0, 1);

  //assigns random stroke value
  stroke(random(100, 200));

  if (x <= .5) {
    fill(20, 255, 255);
    ellipse(mouseX, mouseY, mouseX/4, mouseY/4);
  }

  if (x > .5) {
    fill(random(220, 250), random(20, 50), random(220, 250));
    ellipse(mouseX, mouseY, mouseX/4, mouseY/4);
  }
}

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 29 декабря 2011

Попробуйте использовать булеву переменную, которую вы используете для переключения «состояний» (используя первый цвет или второй). Если вы хотите изменить цвета подкачки в зависимости от количества кадров, вы можете использовать frameCount .

color a,b;
boolean useFirst = true;

void setup(){
  size(1000,1000);
  background(0);
  resetColors();
}
void resetColors(){
  a = color(20, 255, 255);
  b = color(random(220, 250), random(20, 50), random(220, 250));
}
void draw(){
  if(frameCount % 20 == 0) useFirst = !useFirst;//toggle colors every 20 frames
}
void mouseDragged () {
  if(useFirst) fill(a);
  else         fill(b);
  ellipse(mouseX, mouseY, mouseX/4, mouseY/4);
}
void keyPressed(){
  resetColors();
}
...