ofrubyのダウンロードはこちらからどうぞ。
ofruby0.2(審査待ち→今朝通過しました)でタッチした複数の位置情報を取得出来るようになりました。
module Input # タッチ位置を取得(0〜4) def self.touch(idx) # 全てのタッチ位置をArrayで取得 def self.touches end class TouchPoint # タッチしているか? def valid? # x座標 def x # y座標 def y # 押した瞬間にtrue def press? # 押しているか?(valid?と同じ) def down? # 離した瞬間にtrue def release? end
内部でC++で管理しているタッチ情報をRubyのArrayで保持するようにしたのですが、上手くいってかなりすっきりした実装になりました。
範囲外アクセスはArrayが勝手にやってくれますし、
Input.touch(10) # Arrayの範囲外エラー Input.touch(-1) # 同じく
Input.touchesを使うとRubyらしい表現を使ってタッチ位置を処理出来るようになります。美しいですね。
# 最初に見つかったタッチ位置を返す(見つからない時はnilを返す) t = Input.touches.find { |t| t.valid? } # タッチしているタッチ点のみを抜き出す touches = Input.touches.find_all { |t| t.valid? } # 2点以上タッチしているか? if touches.size >= 2 # 中点を求める center_x = touches.reduce(0) { |a, e| a + e.x } / touches.size center_y = touches.reduce(0) { |a, e| a + e.y } / touches.size end
入力を取ることが出来れば作れるものの幅がかなり広がります。早く審査が通って欲しい所です。