画面タッチ座標と状態を取得

構文 touch( [タッチ条件] ) 戻り値: X座標,Y座標, タッチ状態
説明 画面タッチ座標と状態を取得します。ただし、取得座標はcanvas.setMainBmp()に設定された範囲の座標となります。未設定の場合は画面サイズと同じ値が取得されます。
引数 touch命令は引数により、機能が変ります。
touch() 即座にX,Y座標とタッチの状態を返します。
touch(0) 即座にX,Y座標とタッチの状態を返します。
touch(1) タッチされるまで待機し、タッチしていればX,Y座標とタッチの状態を返します。
touch(2) 指が離れるまで待機し、離れていれば、X,Y座標とタッチの状態を返します。
touch(3) 指が離れている状態からタッチ、さらに指が離れるまで待機します。指が離れれば、X,Y座標とタッチの状態を返します。
戻り値 touch命令は、戻り値を3つ持ちます。最終タッチX,Y座標と、画面タッチ状態が返ります。
下記にタッチ状態の値と意味を示します。
0: タッチしている
1: タッチしていない
2: タッチしてスライドしている
3: キャンセルされた
4: 範囲外にタッチしている
0と2の違いに注意してください。どちらもタッチしていますが、タッチした後指が少しでも動いた場合は、2が返ります。

 タッチ状態の「タッチしている」は、戻り値の説明にあるように少しでも動くと「タッチしてスライドしている」になります。
 タッチ状態の「キャンセルされた」「範囲外にタッチしている」は、どのような操作で発生するか知りませんので、未確認です。

------------------------------------------
-- 画面タッチ座標と状態を取得のサンプル touch_sample.lua
------------------------------------------
function main()
 
  local x
  local y
  local mode
  x = 0
  y = 0
 
  canvas.drawCls(color(255,255,255))
  canvas.drawText("画面タッチ座標と状態を取得のサンプル", 0, 0, 24, color(0,0,0))
 
  canvas.drawText("画面タッチ状態:", 0, 30, 24, color(0,0,0))
  canvas.drawText("タッチ座標 X:", 0, 60, 24, color(0,0,0))
  canvas.drawText("タッチ座標 Y:", 0, 90, 24, color(0,0,0))
  canvas.drawRect( 0, 120, 50, 170, color(255,0,0),1)
  canvas.drawRect( 3, 123, 47, 167, color(255,255,255),1)
  canvas.drawText("画面の四角枠内のタッチで終了します。", 0, 180, 24, color(0,0,0))
 
  while not ((x >= 0 and x <= 50) and (y >= 120 and y <= 170)) do
 
    x,y,mode = touch(0)
    canvas.putRect( 200, 30, 512, 114, color(255,255,255),1)
    canvas.putText(x, 200, 60, 24, color(0,0,0))
    canvas.putText(y, 200, 90, 24, color(0,0,0))
 
    if mode == 0 then
      canvas.putText("タッチしている", 200, 30, 24, color(0,0,0))
    elseif mode == 1 then
      canvas.putText("タッチしていない", 200, 30, 24, color(0,0,0))
    elseif mode == 2 then
      canvas.putText("タッチしてスライドしている", 200, 30, 24, color(0,0,0))
    elseif mode == 3 then
      canvas.putText("キャンセルされた", 200, 30, 24, color(0,0,0))
    elseif mode == 4 then
      canvas.putText("範囲外にタッチしている", 200, 30, 24, color(0,0,0))
    end
    canvas.putflush()
  end
end
 
main()
 

1.起動直後になります。
2.画面タッチをすると、画面タッチ状態がタッチしているになります。(シビアで動くとスライド状態となります)
3.画面タッチを移動させると、画面状態がタッチしてスライドしているになります。
4.画面タッチをやめると、やめた座標と画面状態がタッチしていないになります。画面の赤い四角枠内をタッチすると終了します。


コメント(最大10行)
  • こんにちは、いつもいつも、ありがとうございます。
    「キャンセルされた」と「範囲外にタッチしている」は、私のHT-03Aでは出たことがありません。範囲外にタッチは、液晶画面の外にタッチできるものがあるのかもしれません。
    キャンセルは良く分かりません。キャンセルが返ってくる場合もあるようです。 -- (たろサ) 2011-08-12 13:31:17
  • やっぱり、そうですか。いろいろタッチしまくって出なかったので。
    良かった、良かった。 -- (DSLua@wiki) 2011-08-13 10:29:17
名前:
コメント

すべてのコメントを見る



タグ:

+ タグ編集
  • タグ:
最終更新:2011年10月20日 17:56
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。