IntEnv2D e2d; void setup() { size(400, 400); float fps = 60; e2d = new IntEnv2D(this, 0, 0, width, height, fps ); //描画初期設定 smooth(); frameRate(fps); } void draw() { //キーの更新 update_key(); //マウスの更新 update_mouse(); //環境の更新 e2d.update(); } void update_mouse(){ //マウス座標の更新 IntMouse.px = IntMouse.x; IntMouse.py = IntMouse.y; IntMouse.x = mouseX; IntMouse.y = mouseY; //マウスクリックの検出 IntMouse.pressed = mousePressed; IntMouse.clicked = ( IntMouse.pressed && !IntMouse.p_pressed ); IntMouse.p_pressed = IntMouse.pressed; } static void update_key(){ //キー押下の検出 IntKey.kx_prs = (IntKey.kx && !IntKey.pkx); IntKey.kx_rls = (!IntKey.kx && IntKey.pkx); IntKey.ky_prs = (IntKey.ky && !IntKey.pky); IntKey.ky_rls = (!IntKey.ky && IntKey.pky); IntKey.kz_prs = (IntKey.kz && !IntKey.pkz); IntKey.kz_rls = (!IntKey.kz && IntKey.pkz); IntKey.pkx = IntKey.kx; IntKey.pky = IntKey.ky; IntKey.pkz = IntKey.kz; } //マウスの状態を保持 static class IntMouse { static boolean clicked, pressed, p_pressed; static float x, y; //マウス座標 static float px, py; //前回のマウス座標 } //キーの状態を保持 static class IntKey { //キーボード static boolean shift, ctrl, kx, ky, kz; //キーの押下状態 static boolean kx_prs, ky_prs, kz_prs; //キープレスイベント static boolean kx_rls, ky_rls, kz_rls; //キーリリースイベント static boolean pkx, pky, pkz; //前回の状態 } void keyPressed(){ if(keyCode == SHIFT){ IntKey.shift = true; } else if(keyCode == CONTROL){ IntKey.ctrl = true; } else if(key == 'x'){ IntKey.kx = true; } else if(key == 'y'){ IntKey.ky = true; } else if(key == 'z'){ IntKey.kz = true; } else if(key == 'c'){ IntKey.ky = true; } } void keyReleased(){ if(keyCode == SHIFT){ IntKey.shift = false; } else if(keyCode == CONTROL){ IntKey.ctrl = false; } else if(key == 'x'){ IntKey.kx = false; } else if(key == 'y'){ IntKey.ky = false; } else if(key == 'z'){ IntKey.kz = false; } else if(key == 'c'){ IntKey.ky = false; } }