回答編集履歴

1

追加

2020/09/11 22:38

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -21,3 +21,103 @@
21
21
 
22
22
 
23
23
  って言ってます。公式のドキュメントを見るとredraw()を使えば出来そうな気がしますが、Benが言っているのでダメなんでしょう。
24
+
25
+
26
+
27
+ ---
28
+
29
+ その後のコメント欄でのやりとりもあって、その辺盛り込んでみました。
30
+
31
+ ```Processing
32
+
33
+ import processing.net.*;
34
+
35
+ Client client;
36
+
37
+ int[] vals = new int [2];
38
+
39
+ void setup() {
40
+
41
+ size(200, 200);
42
+
43
+ client = new Client(this, "127.0.0.1", 5204);
44
+
45
+ background(255);
46
+
47
+ fill(0, 100);
48
+
49
+ noStroke();
50
+
51
+ for (int i =0; i<2; i++) {
52
+
53
+ vals[i] = 0;
54
+
55
+ }
56
+
57
+ }
58
+
59
+ String in;
60
+
61
+ boolean isServerCall=false;
62
+
63
+ boolean isMouseCall=false;
64
+
65
+ void draw() {
66
+
67
+ if (isServerCall) {
68
+
69
+ rect(100, 100, 50, 50);
70
+
71
+ if (in != null) {
72
+
73
+ in = in.trim();
74
+
75
+ println( "Receiving:" + in);
76
+
77
+ vals = int(split(in, ","));
78
+
79
+ ellipse(vals[0], vals[1], 16, 16);
80
+
81
+ }
82
+
83
+ isServerCall=false;
84
+
85
+ }
86
+
87
+ if( isMouseCall){
88
+
89
+ ellipse(mouseX, mouseY, 16, 16);
90
+
91
+ isMouseCall=false;
92
+
93
+ }
94
+
95
+ }
96
+
97
+ void clientEvent(Client client) {
98
+
99
+ in = client.readString();
100
+
101
+ isServerCall=true;
102
+
103
+ redraw();
104
+
105
+ }
106
+
107
+ void mouseDragged() {
108
+
109
+ String out = mouseX + "," + mouseY + "\n" ;
110
+
111
+ client.write(out);
112
+
113
+ println("Sending: " + out);
114
+
115
+ isMouseCall=true;
116
+
117
+ redraw();
118
+
119
+ }
120
+
121
+ ```
122
+
123
+ 描画はすべてdraw()に任せ、ハンドラからはredraw()経由でdraw()を呼ぶ、という形だとなんだか期待通りに動いているように見えます。