私は SuperCollider で MouseDown を使用したいと思っています。mouseDownAction だけが実際に何かで動作するのですか? 画面上の任意の場所をクリックして、マウス座標をポストウィンドウなどに出力できるようにしたい:
Server.default=s=Server.local;
s.boot;
s.mouseDownAction = { x = {|t_poll=0| var x_val, y_val;
x_val = {MouseX.kr};
y_val = {MouseY.kr};
Poll.kr(t_poll, [x_val, y_val], ["x_val", "y_val"]);
}.play };
s.mouseUpAction = { x.set(\t_poll,1) };
もちろん、これは機能しません。これは、mouseDownAction が「View」クラスのプロパティとして予約されているように見えるためです。つまり、特定のウィンドウ内をクリックするだけです。
w = Window.new("Mouse Coordinates", Rect(1300,600,50,50));
b = Button.new(w,Rect(10,10,40,25)).states_([["off"],["on"]]);
b.mouseDownAction = { x = {|t_poll=0| var x_val, y_val;
x_val = {MouseX.kr};
y_val = {MouseY.kr};
Poll.kr(t_poll, [x_val, y_val], ["x_val", "y_val"]);
}.play };
b.mouseUpAction = { x.set(\t_poll,1) };
w.front;
私が知りたいいくつかのこと:
- 最初のスニペットを実際に機能するように変更できますか?
- 画面上の任意の場所をクリックしたときにこれらの座標を取得するために MouseDown を機能させる方法はありますか?
- マウス座標を「取得」する方法を見つけるにはどうすればよいですか (どの関数を呼び出すか [既に「output」、「postln」、&.c を試しました])。
ありがとう!!!