Освой Processing играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Поближе познакомимся с функциями для мыши. Для начала напишем скетч.
void setup()
{
size(500, 400);
background(255);
}
void draw()
{
// empty
}
void mousePressed()
{
if (mouseButton == RIGHT) {
background(255);
}
}
void mouseMoved()
{
stroke(0, 64);
strokeWeight(1);
fill(255, 32);
float distance = dist( mouseX, mouseY, pmouseX, pmouseY );
constrain(distance, 8, 100);
ellipse( mouseX, mouseY, distance, distance );
}
void mouseDragged()
{
stroke(0);
float distance = dist( mouseX, mouseY, pmouseX, pmouseY );
constrain(distance, 0, 100);
float weight = map(distance, 0, 100, 1, 10);
strokeWeight(weight);
line( mouseX, mouseY, pmouseX, pmouseY );
}
void mouseReleased()
{
noStroke();
fill(255, 16);
rect(0, 0, width, height);
}
void mouseClicked()
{
fill(255, 0, 0, 128);
float size = random(20, 200);
ellipse(mouseX, mouseY, size, size);
}
Функцию draw() мы оставили пустой, а все операции проводим в функциях мыши. Но сама функция нужна, иначе программа перестанет быть интерактивной.
Запустите пример. Теперь вы можете рисовать мышью. Мышь оставляет след в виде кругов. Когда вы нажимаете кнопку и отпускаете её, появляется красный круг. Когда вы двигаете мышью, удерживая левую кнопку мыши, появляется чёрная линия. По нажатию правой кнопки мыши картинка стирается и вы можете начать сначала.
Нарисуем в центре окна круг. Если мышь находится за пределами круга, то круг красный. Когда мышь попадает в область круга, то круг становится зелёным. Если при этом нажать на левую кнопку мыши, то круг станет синим.
int radius = 75; //задаём радиус круга
int x = 300;
int y = 200;
void setup() {
size(600, 400);
smooth(); // сглаживание
noStroke(); // выключаем обводку
}
void draw() {
background(200); // фон окна - серый
ellipse(x, y, radius * 2, radius * 2); //рисуем круг в центре окна
float distance = dist(mouseX, mouseY, x, y); //отслеживаем положение курсора
if (distance > radius) {
// если мышь за пределами круга, то круг красный
fill(225, 0, 0, 255);
} else if (mousePressed) {//левая кнопка мышки нажата
if (mouseButton == LEFT) {
fill(0, 0, 255, 255); // закрашиваем круг синим цветом
}
} else {
// если курсор внутри круга, то закрашиваем его в зелёный цвет. кнопка не нажата
fill(0, 225, 0, 255);
}
}
Существует пять функций и шесть встроенных переменных для работы с мышью:
На главную страницу Processing