前回の弱気な?マークとは違って、今回は強気の!マークです(笑)。MaxをコントロールするためのiPhoneネイティブ・アプリケーションが(一応)完成。aka.iphone / experiment 2として公開しました。勝手アプリなので、あなたのiPhoneがレンガになる前に試してください。Maxへ直接OSCメッセージを送るので、前回のようにサーバを設定するといった面倒はありません。
さて、これで、ようやくスライダーをグリグリできるようになりました。プッシュ・ボタンとトグル・ボタンもあります。まだ実際には作っていませんが、XYパッドやナンバー・ボックス、テキスト・ボックスなども盛り込めそうです。反応&通信はとっても速いです。
ただし、システム標準(?)のGUIライブラリ(UIKit)を使っているせいか、マルチ・タッチはできません。もっとも、あるボタンを押さえながら別のボタンを押せるなど、マルチ・タッチらしきことは見え隠れしています。正式なドキュメントがないので、これまでの解析結果を参考に、手探りで試行錯誤しているわけで、かなり開発に時間がかかるのがツライところ(軟弱)。
それから、IPアドレスやポート番号が固定のままとか、いろいろと不備がありますね(だって面倒だから)。GUIを自由に配置したいといった要望も出てくると思うのですが、専用エディタを作る程暇人じゃないし、どうしたものかと思案顔です。まぁ、遊べる範囲で遊んでください。
マルチタッチの実装ちょっとずつ判明してきました.
手前味噌ですが,よかったら,試してみてください.
http://son-son.sakura.ne.jp/programming/iphone_4.html
コメントありがとうございます。UIResponderとかですよね。ピンチはこれでできそうですね。
本当は多点認識&追跡をしたい訳ですが、私の使っているSDK(0.2系)はMultitouchSupportフォルダが空っぽだったりして、まだ良く分かりません。
Appleのムービーを見る限りでは、ハードウェア的には静電容量(?)の電位マップが得られるようなので、画像認識でやっているような手法を適用できるかなと妄想しています。
ともあれ、道は遠いかもしれませんが、またご助言いただければ幸いです。
えーっと,ちょっとUIResponder?なのかもしれませんが,
UIViewで,gestureStarted,gestureChanged,gestureEndedの3つのイベントを実装すれば,二つ以上クリックしているときの二つのクリックした点をそれぞれ独立に取ることができます.たぶん.
後,ちょっと質問なのですが,Maxと通信しているのはTCPですよね?
もしそうだとすると,TCP/IPのコネクションを開くモノが用意されているということですか?
はい、実際に使う時はUIViewか、そのサブクラスでしょうね。
Maxとの通信はUDPで、上位プロトコルはOSCです。ObjCOSCというライブラリを利用しました。通信自体はOS XというかBSDの機能を使っているみたいです。
TCPならmobilepongあたりが参考になるかも。こちらは SmallSocketsってのを使っていて、これもBSDを呼んでいるみたいです。
ピンバック: akalogue » Blog Archive » Programming for non-programmers - Masayuki Akamatsu