Существует ли более краткий способ чередования формы и цвета фона с Java при обработке?

#java #processing

Вопрос:

При обработке мне нужно, чтобы прямоугольник в середине окна выглядел фиолетовым, а фон желтым, когда мышь находится внутри прямоугольника. Когда мышь находится в другом месте экрана (касается фона), прямоугольник должен быть желтым, а фон-фиолетовым. Я достиг своей цели, но мне интересно, есть ли более краткий способ написания этого кода или есть альтернативные подходы?

 void setup ()
{
 size(500, 500);
}

void draw()
{
  background(205, 86, 219); // purple
  rectMode(CENTER);
  fill(231, 240, 111); // yellow
  rect(250, 250, 250, 200);
 if (mouseX >= 125 amp;amp; mouseX <= 375 amp;amp; mouseY >= 100 amp;amp; mouseY <= 300)
 {
   background(231, 240, 111); // yellow
  fill(205, 86, 219); // purple
  rect(250, 250, 250, 200);
}
}
 

Ответ №1:

Создайте 2 color объекта с 2 цветами:

 color color1 = color(231, 240, 111); 
color color2 = color(205, 86, 219); 
 

Установите boolean переменную, когда мышь находится на прямоугольнике:

 boolean onRect = mouseX >= 125 amp;amp; mouseX <= 375 amp;amp; mouseY >= 100 amp;amp; mouseY <= 300;
 

Используйте оператор ternary ( ?: ) для выбора цвета в зависимости от состояния onRect :

 background(onRect ? color1 : color2);
 
 fill(onRect ? color2 : color1);
 

Полный пример:

 color color1 = color(231, 240, 111); 
color color2 = color(205, 86, 219); 

void setup () {
    size(500, 500);
}

void draw() {
    boolean onRect = mouseX >= 125 amp;amp; mouseX <= 375 amp;amp; mouseY >= 100 amp;amp; mouseY <= 300;
    background(onRect ? color1 : color2);
    rectMode(CENTER);
    fill(onRect ? color2 : color1);
    rect(250, 250, 250, 200);
}
 

Комментарии:

1. Это потрясающе. Спасибо!

2. @amac Спасибо тебе. Пожалуйста.