連載インデックスへ
次世代のインプットを考えよう
──マウスとキーボードを超えたフィジカルコンピューティング(1)


iPhoneをリモコンにしてみる


浦野大輔(うらのだいすけ)
サイバーエージェント新規開発局所属
2009/1/9

iphoneas

- PR -

 iphoneasはiPhoneとAS3で通信するためのライブラリです。OSCemoteの各パネルから送信されるOSCメッセージに対応し、イベントドリブンにプログラミングできます。

 ソースコードはFlash/ActionScript開発のためのオープンソースコミュニティ、Spark projectで公開されています。

flosc

 floscは、FlashでOSCを使用するためのソケットサーバアプリケーションです。

 Flash Playerは直接OSCメッセージを受信できないため、OSCメッセージをXMLソケットに変換するゲートウェイの役割をします。

flosc : Flash OpenSound Control

 floscを稼働させましょう。floscでは外部からFlashに送られてくるデータ用のポート番号と、Flashから外部に送るポート番号を指定します。

 前者の番号は、OSCemoteで設定したポート番号を指定しましょう。ここでは3333を指定します。

 後者の番号は、iphoneasで使用するポート番号を指定します。ここでは3000を指定します。3000以外の番号を使用する場合は後のコーディングの際に使用するので覚えておきましょう。

・Windowsユーザー:

flosc_3333_3000.batを実行します。

・Macユーザー:

1.ターミナルでflosc-0.3.1フォルダに移動します。

2.ターミナルに"javaGateway 3333 3000"と入力し実行します。

動作確認

 サンプルを実行してみましょう。

 このサンプルでは、OSCemoteのマルチタッチ情報をFlashの出力ウィンドウに出力します。

 まず、MultitouchSample.flaを開いて、パブリッシュして実行します。

 Flashの出力ウィンドウに「[object IPhoneas] ::onConnect」と表示されれば、floscに接続成功です。

 次にOSCemoteのMulti-Touchパネルを開いて、指をタッチして動かしてみてください。

 Flashの出力ウィンドウでは以下のようなメッセージが確認できます。

 これらはマルチタッチ中の各指の識別ID、x座標とy座標(0から1の値)を示しています。

onTouch:
id=1 (0.30625 , 0.13381995)
id=2 (0.646875 , 0.29927006)

ソースコードの解説

 このサンプルで使用しているドキュメントクラス、MultitouchSample.asについて簡単に解説します。

package
{
    import flash.display.Sprite;
   
    import uranodai.oscemote.IPhoneas; // -- 【1】
    import uranodai.oscemote.event.OSCemoteTouchEvent; // -- 【1】
    import uranodai.oscemote.model.touch.TouchData; // -- 【1】
   
    public class MultitouchSample extends Sprite
    {
        private var iphoneas:IPhoneas;
       
        public function MultitouchSample()
        {
            iphoneas = new IPhoneas();    // -- 【2】
            iphoneas.addEventListener
               (OSCemoteTouchEvent.TOUCH, onTouch); // -- 【3】
            iphoneas.connect(); // -- 【4】
        }
       
        private function onTouch(e:OSCemoteTouchEvent):void
        {
            trace("onTouch:");
            for(var i:int=0; i<e.count; i++) // -- 【5】
            {
                var t:TouchData = e.getTouch(i); // -- 【6】
                trace("id="+t.id+" ("+t.x+" , "+t.y+")"); // -- 【7】
            }
            trace("");
        }
    }
}

【1】

OSCemoteを使うためのクラスiPhoneas、Multi-TouchパネルのためのクラスOSCemoteTouchEvent、マルチタッチのデータクラスTouchDataをそれぞれインポートします。

【2】

 iPhoneasクラスのインスタンスを作成します。引数にホスト名と接続ポート番号が必要ですが、初期値にそれぞれlocalhostと3000が指定されています。

 floscで指定した後者のポート番号で3000以外を使用している場合は、2つ目の引数に任意のポート番号を指定してあげましょう。

【3】

 【2】で作成したインスタンスに、TOUCHイベントのリスナを追加します。Multi-Touchパネルのイベントが更新されるたびに、onTouchが呼び出されることになります。

【4】

 floscに接続します。

【5】

 イベントオブジェクトのcountプロパティでマルチタッチ中の指の数を取得します。

【6】

 イベントオブジェクトのgetTouchメソッドでマルチタッチ中の指のそれぞれのタッチ情報を取得します。

【7】

 タッチ情報それぞれの固有ID、x座標、y座標を出力します。

マルチタッチペイント

 次のサンプルでは、前述のサンプルを拡張したお絵描きアプリを紹介します。

 サンプルファイル中のMultitouchPaint.flaを開いて、パブリッシュして実行します。同じように指をタッチして動かしてみましょう。白いキャンバスに線が描かれましたか?

3/4

 INDEX
次世代のインプットを考えよう
──マウスとキーボードを超えたフィジカルコンピューティング(1)

iPhoneをリモコンにしてみる
  Page1
フィジカルコンピューティングとは?
AIR SANPOとは?
AIR SANPOでやりたかったこと
iPhoneでできること
iPhoneとFlashの連携チュートリアル
iPhoneのネットワーク設定
  Page2
iPhoneのアプリケーションをインストール
OSCemoteを使う
サンプルファイルのダウンロード
Page3
iphoneas
flosc
動作確認
ソースコードの解説
マルチタッチペイント
  Page4
ソースコードの解説
iphoneas AS3 APIについて
まとめ

【関連記事】

iPhoneアプリ情報を集めた「ITmedia App Town」を開設しました
ITmedia +D Mobile内に、iPhoneアプリの情報を集約するサイト「ITmedia App Town」を開設した。今後はiPhoneアプリの新作情報やレビュー記事などをこのページに集約していく。請うご期待。
App Store登録もOK! JavaScriptで作るiPhoneアプリ
これ、俺ならこう使う(5)
 HTML+JavaScriptでiPhoneアプリをWebアプリ的に開発しつつ、App Storeで販売できてしまう一挙両得のハイブリッド手法でCoCoTwitter作りました
リッチクライアント & 帳票」フォーラム 2008/11/28
Chumby開発者が語る誕生秘話とビジネスモデル
D89クリップ(2) かわいらしいルックスとハッキングのしやすさが注目を集める「Chumby」。Chumbyの生みの親が、ガジェットに対してユーザーが受け身でいられる自由を語る
テレビでYahoo!―デバイスが変わればUIデザインも
WebとUIをつなぐトリックスター(2) 制作の要となるエンジニアとデザイナのチームワークのツボを探る連載。今回はヤフーのテレビ向けサービスのデザイン担当に話を聞いた
Flashの基礎を無料で習得! ActionScript入門
ActionScriptを知っていますか? Flash技術の要となる言語で無料で簡単にFlashアプリケーションを作れます。そのActionScriptについて初心者のために一から丁寧に解説していきます

[an error occurred while processing this directive]

 Smart&Social フォーラム トップページへ



Smart & Social フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Smart & Social 記事ランキング

本日 月間