Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Наведение курсора мышки

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

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

Пример

  1. int rectX, rectY;      // позиция квадратной кнопки
  2. int circleX, circleY;  // позиция круглой кнопки
  3. int rectSize = 90;     // диаметр прямоугольника
  4. int circleSize = 93;   // диаметр круга
  5.  
  6. color rectColor;
  7. color circleColor;
  8. color baseColor;
  9.  
  10. boolean rectOver = false;
  11. boolean circleOver = false;
  12.  
  13. void setup() {
  14.   size(640, 360);
  15.   rectColor = color(0);
  16.   circleColor = color(255);
  17.   baseColor = color(102);
  18.   circleX = width/2+circleSize/2+10;
  19.   circleY = height/2;
  20.   rectX = width/2-rectSize-10;
  21.   rectY = height/2-rectSize/2;
  22.   ellipseMode(CENTER);
  23. }
  24.  
  25. void draw() {
  26.   update(mouseX, mouseY);
  27.  
  28.   noStroke();
  29.   if (rectOver) {
  30.     background(rectColor);
  31.   } else if (circleOver) {
  32.     background(circleColor);
  33.   } else {
  34.     background(baseColor);
  35.   }
  36.  
  37.   stroke(255);
  38.   fill(rectColor);
  39.   rect(rectX, rectY, rectSize, rectSize);
  40.   stroke(0);
  41.   fill(circleColor);
  42.   ellipse(circleX, circleY, circleSize, circleSize);
  43. }
  44.  
  45. void update(int x, int y) {
  46.   if( overCircle(circleX, circleY, circleSize) ) {
  47.     circleOver = true;
  48.     rectOver = false;
  49.   } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
  50.     rectOver = true;
  51.     circleOver = false;
  52.   } else {
  53.     circleOver = rectOver = false;
  54.   }
  55. }
  56.  
  57. boolean overRect(int x, int y, int width, int height) {
  58.   if (mouseX >= x && mouseX <= x+width &&
  59.       mouseY >= y && mouseY <= y+height) {
  60.     return true;
  61.   } else {
  62.     return false;
  63.   }
  64. }
  65.  
  66. boolean overCircle(int x, int y, int diameter) {
  67.   float disX = x - mouseX;
  68.   float disY = y - mouseY;
  69.   if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
  70.     return true;
  71.   } else {
  72.     return false;
  73.   }
  74. }

См.также

Внешние ссылки

  1. processing.org - Rollover