#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 Спасибо тебе. Пожалуйста.