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. color rectColor, circleColor, baseColor;
  6. color rectHighlight, circleHighlight;
  7. color currentColor;
  8. boolean rectOver = false;
  9. boolean circleOver = false;
  10.  
  11. void setup() {
  12.   size(640, 360);
  13.   rectColor = color(0);
  14.   rectHighlight = color(51);
  15.   circleColor = color(255);
  16.   circleHighlight = color(204);
  17.   baseColor = color(102);
  18.   currentColor = baseColor;
  19.   circleX = width/2+circleSize/2+10;
  20.   circleY = height/2;
  21.   rectX = width/2-rectSize-10;
  22.   rectY = height/2-rectSize/2;
  23.   ellipseMode(CENTER);
  24. }
  25.  
  26. void draw() {
  27.   update(mouseX, mouseY);
  28.   background(currentColor);
  29.  
  30.   if (rectOver) {
  31.     fill(rectHighlight);
  32.   } else {
  33.     fill(rectColor);
  34.   }
  35.   stroke(255);
  36.   rect(rectX, rectY, rectSize, rectSize);
  37.  
  38.   if (circleOver) {
  39.     fill(circleHighlight);
  40.   } else {
  41.     fill(circleColor);
  42.   }
  43.   stroke(0);
  44.   ellipse(circleX, circleY, circleSize, circleSize);
  45. }
  46.  
  47. void update(int x, int y) {
  48.   if ( overCircle(circleX, circleY, circleSize) ) {
  49.     circleOver = true;
  50.     rectOver = false;
  51.   } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {
  52.     rectOver = true;
  53.     circleOver = false;
  54.   } else {
  55.     circleOver = rectOver = false;
  56.   }
  57. }
  58.  
  59. void mousePressed() {
  60.   if (circleOver) {
  61.     currentColor = circleColor;
  62.   }
  63.   if (rectOver) {
  64.     currentColor = rectColor;
  65.   }
  66. }
  67.  
  68. boolean overRect(int x, int y, int width, int height)  {
  69.   if (mouseX >= x && mouseX <= x+width &&
  70.       mouseY >= y && mouseY <= y+height) {
  71.     return true;
  72.   } else {
  73.     return false;
  74.   }
  75. }
  76.  
  77. boolean overCircle(int x, int y, int diameter) {
  78.   float disX = x - mouseX;
  79.   float disY = y - mouseY;
  80.   if (sqrt(sq(disX) + sq(disY)) < diameter/2 ) {
  81.     return true;
  82.   } else {
  83.     return false;
  84.   }
  85. }

См.также

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

  1. processing.org - Button