手書き

 画面をタッチによる手書きのサンプルです。

------------------------------------------
-- 手書きサンプル handwriting_sample.lua
------------------------------------------
function main()
 
  local x, old_x
  local y, old_y
  local mode
  x = 0
  y = 0
 
  w,h = canvas.getviewSize()
 
  canvas.drawCls(color(255,255,255))
  canvas.drawText("手書きサンプル", 0, 0, 24, color(0,0,0))
 
  canvas.drawText("画面タッチ状態:", 0, 30, 14, color(0,0,0))
  canvas.drawText("タッチ座標 X:", 0, 45, 14, color(0,0,0))
  canvas.drawText("タッチ座標 Y:", 0, 60, 14, color(0,0,0))
  canvas.drawRect( w-52, 0, w+52 + 24*2, 24, color(255,0,0))
  canvas.drawText("終了", w -50, 0, 24, color(0,0,0))
 
  while not (x >= w-60 and y <= 30) do --終了位置は甘い判定
 
    x,y,mode = touch(0)
    canvas.putRect( 110, 30, 200, 75, color(255,255,255),1)
    canvas.putText(x, 110, 45, 14, color(0,0,0))
    canvas.putText(y, 110, 60, 14, color(0,0,0))
 
    if mode == 0 then
      canvas.putText("タッチ中 ", 110, 30, 14, color(0,0,0))
      canvas.putCircle( x, y, 1, color(255,0,0))
    elseif mode == 1 then
      canvas.putText("ノータッチ", 110, 30, 14, color(0,0,0))
    elseif mode == 2 then
      canvas.putText("スライド中", 110, 30, 14, color(0,0,0))
      canvas.putLine( old_x, old_y, x, y, color(255,0,0) )
    elseif mode == 3 then
      canvas.putText("CANCEL  ", 110, 30, 14, color(0,0,0))
    elseif mode == 4 then
      canvas.putText("範囲外  ", 110, 30, 14, color(0,0,0))
    end
    canvas.putflush()
    old_x = x
    old_y = y
  end
end
 
main()
 


1.画面をタッチによる手書きのサンプルです。
2.指で画面をなぞって・・・。
3.その座標を読み取り線を描画しています。
4.文字も可読できる品質です。終了は、右上の終了を押します。

このサンプルはLine文で1ドットでつないでいますが、点で描画したり線の太さを加減すれば、より読みやすくなるでしょう。
セーブ機能等付加すれば、手書きメモアプリが作成できます。 


コメント(最大10行)
  • 「終了」のようなアイコンをスプライトで配置できて、そのスプライトがタッチされたかどうかを返すコマンドを追加しようと検討中です。
    今、設計しているのですが、まだ、仕様が固まっていません。
    これが出来ると、アイコンにタッチという処理が楽に書けると思います。
    -- (たろサ) 2012-02-29 10:53:41
  • 返事が遅くなりましたが、実装されれば大変便利な機能です。
    楽しみに待っています。 -- (DSLua@wiki) 2012-03-03 09:20:22
名前:
コメント

すべてのコメントを見る



タグ:

+ タグ編集
  • タグ:
最終更新:2012年02月27日 09:34
ツールボックス

下から選んでください:

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