十進BASICの独自の拡張機能であるMOUSE POLLを利用して、よく使う次の5種類の操作をモジュールにまとめました。 ・長押し(press) ・右クリック(right click) ・Wクリック(w click) ・左クリック(single click) ・ドラッグ(drag)
MOUSE POLLの「マウスの操作を待たない」という特徴をできる限り引き継ぐようにしました。 マウス操作と他の命令を並行的に処理できます。 グラフィックス画面内で上の5種類の操作を試してみて下さい。
DECLARE EXTERNAL SUB mouse.operation ! マウス操作 SET TEXT BACKGROUND "OPAQUE" DIM tail_p(2,200) ! しっぽの長さ;200 SET POINT STYLE 2 ! ドラッグの軌跡;+ SET POINT COLOR 4 ! ドラッグの軌跡;赤 LET n=6 ! 操作の回数 FOR i=1 TO n PLOT TEXT ,AT 0.1,0.95 ,USING "あと ># 回操作":STR$(n+1-i) DO PLOT TEXT ,AT 0.4,0.95 ,USING "TIME = <####.##":STR$(TIME) !マウス操作と並行処理可 CALL mouse.operation(action,clickx,clicky,pointerx,pointery) !マウス操作 !CALL tail(clickx,clicky,tail_p,4,3) ! ポインタのしっぽ;o,緑 !IF action=0.1 AND (clickx<>pointerx OR clicky<>pointery) THEN PLOT POINTS : pointerx,pointery !ドラッグの軌跡 LOOP UNTIL action>=1 SELECT CASE action CASE 1 ! 長押し PLOT TEXT ,AT clickx,clicky :"press" CASE 2 ! 右クリック PLOT TEXT ,AT clickx,clicky :"right click" CASE 3 ! Wクリック PLOT TEXT ,AT clickx,clicky :"w click" CASE 4 ! 左クリック PLOT TEXT ,AT clickx,clicky :"single click" CASE 5 ! ドラッグ PLOT TEXT ,AT clickx,clicky :"drag" PLOT LINES : clickx,clicky ; pointerx,pointery ! PLOT TEXT ,AT pointerx,pointery :"release" END SELECT NEXT i PLOT TEXT ,AT 0.1,0.95 : "プログラム終了 !!" SUB tail(x9,y9,t(,),ps,pc) ! ポインタのしっぽ ASK POINT STYLE aps ASK POINT COLOR apc LET tn=SIZE(t,2) SET POINT STYLE ps SET POINT COLOR 0 PLOT POINTS : t(1,1),t(2,1) IF x9<>t(1,tn) OR y9<>t(2,tn) THEN SET POINT COLOR pc PLOT POINTS : x9,y9 END IF FOR j=1 TO tn-1 LET t(1,j)=t(1,j+1) LET t(2,j)=t(2,j+1) NEXT j LET t(1,tn)=x9 LET t(2,tn)=y9 SET POINT STYLE aps SET POINT COLOR apc END SUB END !<続く>
|