class Button{ Button() { } void setup(int _x, int _y, boolean _status) { x = _x; y = _y; size = 80; status = _status; c = color(50,50,50); // 初期の色はグレー } void draw() { fill(c); ellipse(x, y, size, size); } void update() { // マウスがボタン上にあるとき(ボタン押下処理) if ( dist(x, y, mouseX, mouseY) < size/2 ) { // マウスボタンが押されている、且つ一つ前の状態では押されていなかったとき if ( mousePressed == true && previous_mousePressed == false) { status = !status; // falseならtrue, trueならfalseにする // trueなら明るめのグレーにする if( status == true ){ c = color(200,200,200); } // falseならグレー else{ c = color(50,50,50); } } } previous_mousePressed = mousePressed; } int x; // x座標 int y; // y座標 color c; // 色 boolean status; // スイッチの状況(false/true) int size; // 円の直径 boolean previous_mousePressed; // 一つ前のマウスボタン状態を保存しておく } Button[] button = new Button[16]; void setup() { size(500, 500); for ( int i = 0; i < 16; i++ ) { button[i] = new Button(); button[i].setup(100+(i%4)*100, 100+(i/4)*100, false); } } void draw() { background(0); for ( int i = 0; i < 16; i++ ) { button[i].update(); button[i].draw(); } }