| Функции, реагирующие на события мыши.
Встроенные переменные.
- Функция mouseClicked() активируется, когда вы кликаете мышью. Это означает нажатие и отпускание кнопки мыши. В последнем нашем скетче эта функция применяется для рисования прозрачного красного круга.
- Функция mouseDragged() активируется, когда вы нажимаете кнопку мыши и двигаете мышью, пока кнопка нажата. С помощью этой функции мы рисуем линии в нашем скетче.
- Функция mouseMoved() вызывается каждый раз, когда мышь передвигается, а кнопки не нажаты. В нашем скетче она рисует белые прозрачные круги с черной прозрачной границей.
- Функция mousePressed() вызывается, когда вы нажимаете кнопку мыши. Мы использовали эту функцию вместе со встроенной переменной mouseButton для очистки экрана правой кнопкой мыши.
- Функция mouseReleased() вызывается, когда вы отпускаете кнопку мыши. С помощью этой функции мы рисуем белый прозрачный прямоугольник размером с окно скетча поверх всех изображений.
|
- Встроенная переменная mouseX содержит текущую координату x мыши в окне скетча. Она обновляется с каждым кадром.
- Встроенная переменная mouseY содержит текущую координату y мыши в окне скетча. Она обновляется с каждым кадром.
- Встроенная переменная pmouseX содержит координату x мыши предыдущего кадра. Она обновляется с каждым кадром.
- Встроенная переменная pmouseY содержит координату y мыши предыдущего кадра. Она обновляется с каждым кадром.
- Встроенная переменная mousePressed - это логическая переменная, проверяющая, нажата кнопка или нет. Значение переменной истинно, когда кнопка мыши нажата и ложно, когда она отжата.
- Встроенная переменная mouseButton - это переменная, содержащая информацию о том, какая кнопка мыши нажата. Она принимает значения LEFT, RIGHT и CENTER.
|
Работаем с мышью
источник: Ян Вантомм - Processing 2 креативное программирование - 2012
Задание. Составить код скетча в котором:
- Мышь оставляет след в виде кругов.
- Когда вы нажимаете кнопку и отпускаете ее, появляется красный круг.
- Когда вы двигаете мышью, удерживая левую кнопку мыши, появляется черная линия.
- По нажатию правой кнопки мыши картинка стирается и вы можете начать сначала.
|
 |
void setup()
{
size( 640, 480 );
smooth();//сглаживает края фигур
background( 255 ); //устанавливает цвет заливки фона
}
void draw()
{
// пусто, но оно нам нужно для создания приложения, работающего в непрерывном режиме
}
/* Вызывается, когда вы нажимаете кнопку мыши. Мы использовали эту функцию вместе со встроенной переменной mouseButton для очистки экрана правой кнопкой мыши.*/
void mousePressed()
{
if ( mouseButton == RIGHT ){background( 255 );} // если нажата правая кнопка мыши
}
// Вызывается каждый раз, когда мышь передвигается, а кнопки не нажаты.
void mouseMoved()
{
stroke( 0, 64 );// устанавливает цвет штриха фигуры.
strokeWeight( 1 ); //устанавливаем толщину контура фигуры
fill( 255, 32 ); // используется для установки цвета заливки фигуры
float d = dist( mouseX, mouseY, pmouseX, pmouseY ); /* команда dist позволяет определить расстояние между двумя точками*/
constrain( d, 8, 100 ); // позволяет указать границы значений для определенной переменной
ellipse( mouseX, mouseY, d, d );
}
// активируется, когда вы нажимаете кнопку мыши и двигаете мышью, пока кнопка нажата
void mouseDragged()
{
stroke( 0 ); // устанавливает цвет контура фигуры.
float d = dist( mouseX, mouseY, pmouseX, pmouseY ); /* команда dist позволяет определить расстояние между двумя точками*/
constrain( d, 0, 100 ); // позволяет указать границы значений для определенной переменной
float w = map( d, 0, 100, 1, 10 ); // команда map позволяет перевести данные из одной шкалы в другую
strokeWeight( w );// Устанавливаем толщину контура фигуры
line( mouseX, mouseY, pmouseX, pmouseY );
}
//вызывается, когда вы отпускаете кнопку мыши.
void mouseReleased()
{
noStroke();//контур вашей фигуры невидим
fill( 255, 16 );// используется для установки цвета заливки фигуры
rect( 0, 0, width, height );
}
//Активируется, когда вы кликаете мышью. Это означает нажатие и отпускание кнопки мыши.
void mouseClicked()
{
fill( 255, 0, 0, 128 );
float d = random( 20, 200 );
ellipse( mouseX, mouseY, d, d );
}
|
Пример 2. Перемещение мыши изменяет положение и размер каждого поля.
void setup() {
size(640, 360);
noStroke();
rectMode(CENTER);
}
void draw() {
background(51);
fill(255, 204);
rect(mouseX, height/2, mouseY/2+10, mouseY/2+10);
println("mouseX = ",mouseX," mouseY = ",mouseY);
fill(255, 204);
int inverseX = width-mouseX;
int inverseY = height-mouseY;
println("inverseX = ",width-mouseX," inverseY = ",height-mouseY);
//первая пара аргументов отвечает за центр прямоугольника (а не за верхний левый угол)
rect(inverseX, height/2, (inverseY/2)+10, (inverseY/2)+10);
}
|


|
| |