###前提・実現したいこと
Processingでカーソルが図形に重なると色と音が変わるプログラムで、何も操作していない時も図形が表れるように変更したいです。以下が、現状と変更後に実現したいことです。
###発生している問題・エラーメッセージ
何も操作していない時には、図形も背景色に隠れてしまって、どこにマウスを持っていけばいいか判断のつかないUIになっています。
###該当のソースコード
Processing
1import ddf.minim.*; 2import ddf.minim.signals.*; 3import ddf.minim.analysis.*; 4import ddf.minim.effects.*; 5 6ArrayList<MyShape> shapes = new ArrayList<MyShape>(); 7 8void setup() { 9 size(720, 720); 10 background(125); 11 frameRate(100); 12 13 //1を描画し、マウスが触れたら指定の色に変わる 14 MyShape ichi; 15 ichi = new MyRect(70, 140, 32, 200, #CE2828, "do.wav" ); 16 shapes.add(ichi); 17 18 //2を描画し、マウスが触れたら指定の色に変わる 19 MyShape ni; 20 ni = new MyRect(170, 150, 100, 32, #1318F0, "so.wav"); 21 shapes.add(ni); 22 ni = new MyRect(238, 182, 32, 43, #1318F0, "so.wav"); 23 shapes.add(ni); 24 ni = new MyRect(170, 225, 100, 32, #1318F0, "so.wav"); 25 ni.selectedFill = #1318F0; 26 shapes.add(ni); 27 ni = new MyRect(170, 257, 32, 43, #1318F0, "so.wav"); 28 shapes.add(ni); 29 ni = new MyRect(170, 300, 100, 32, #1318F0, "so.wav"); 30 shapes.add(ni); 31} 32 33void draw() { 34 rect (310, 310, 100, 100); 35 line(360, 0, 360, 720); 36 line(0, 360, 720, 360); 37 noStroke(); 38 39 background(102); 40 for (MyShape shape : shapes) { 41 if (shape.contains(mouseX, mouseY)) { 42 fill(shape.selectedFill); 43 if (shape.soundFile != null) { 44 Minim minim=new Minim(this); 45 AudioSample sample = minim.loadSample(shape.soundFile); 46 delay(1000); 47 sample.trigger(); 48 } else { 49 fill(255); 50 } 51 shape.draw(); 52 } 53 } 54} 55 56// 長方形を表すクラス 57class MyRect extends MyShape { 58 float x, y, w, h; 59 60 MyRect(float x, float y, float w, float h, int selectedFill, String soundFile) { 61 super(selectedFill, soundFile); 62 this.x = x; 63 this.y = y; 64 this.w = w; 65 this.h = h; 66 } 67 68 void draw() { 69 rect(x, y, w, h); 70 } 71 72 boolean contains(float mx, float my) { 73 return mx >= x && mx <= (x + w) && my >= y && my <= (y + h); 74 } 75} 76 77// 任意の図形を表す抽象クラス 78abstract class MyShape { 79 int selectedFill; 80 String soundFile; 81 82 MyShape() { // 何も指定しない場合は選択色が黒で、音のファイルは無し(=null)とする 83 this(#FFFFFF, null); 84 } 85 86 MyShape(int selectedFill, String soundFile) { 87 this.selectedFill = selectedFill; 88 this.soundFile = soundFile; 89 } 90 91 // 画面上へこの図形を描画するメソッド 92 abstract void draw(); 93 94 // 指定位置がこの図形に含まれるかどうか判定するメソッド 95 abstract boolean contains(float x, float y); 96}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/10 01:11
2017/07/10 01:29
退会済みユーザー
2017/07/10 06:01