openframeworksを使ったiPhoneアプリケーション〜自作アプリケーション〜
以前紹介した、openframeworksの自作アプリケーション作成について簡単に紹介したいと思います。
前回の記事はこちら
前回の記事に書き忘れていたのですが、openframeworksをiPhone向けに移植した方のHPはこちらです。
プロジェクトの作成
まずはディレクトリの作成から。 「apps」ディレクトリ内に自作アプリケーション用の空ディレクトリ(以降myAprとします)を作成します。
「apps/iPhoneExample/emptyExample」をコピーして「myApr」ディレクトリ内にコピーします。 emptyExampleでは寂しいので、このディレクトリも適当な名前(以降testAprとします)に変えておくと良いでしょう。
ひとまずこの段階でプロジェクトファイル(iPhoneEmptyExample.xcodeproj)を開いて、「ビルドと実行」をしてみます。 openframeworksのロゴが表示された後に、グレーの画面がiPhoneシミュレータに表示されるはずです。
基本的な構成
ここでソースコードをのぞいてみます。 「testApp.mm」「testApp.h」がプログラムの中心となるファイルです。 既にいくつかの関数が定義されており、基本的にはこの関数内に処理を組み込んで行くことになります。
testApp.h
#pragma once
#include "ofMain.h"
#include "ofxiPhone.h"
#include "ofxiPhoneExtras.h"
class testApp : public ofxiPhoneApp {
public:
void setup();
void update();
void draw();
void exit();
void touchDown(ofTouchEventArgs &touch);
void touchMoved(ofTouchEventArgs &touch);
void touchUp(ofTouchEventArgs &touch);
void touchDoubleTap(ofTouchEventArgs &touch);
void lostFocus();
void gotFocus();
void gotMemoryWarning();
void deviceOrientationChanged(int newOrientation);
};
関数名から見当はつきますが、各関数がイベントハンドラになっています。
(この辺の関数名はopenframeworksがProcessingの影響をうけていることに起因するようです)
各関数について簡単に説明します。
- setup()
アプリケーション起動時に一度だけコールされます。初期処理等はここに記述します。
- update()
アプリケーション起動中、定期的にコールされます。後述のdrawの前にコールされ、変数の更新等はここで行います。
- draw()
アプリケーション起動中、定期的にコールされます。前述のupdateの後にコールされ、描画等はここで行います。 アプリケーション起動中は「update」→「draw」→「update」→「draw」→と延々とコールされることになります。
- exit()
アプリケーション終了前に一度だけコールされます。終了処理はここで行います。
- touchDown() touchMoved() touchUp() touchDoubleTap()
名前の通り、タッチ時 ドラッグ時 タッチアップ時 ダブルタッチ時にコールされます。 引数のofTouchEventArgs &touchにはタッチの座標位置等が格納されます。
- lostFocus() gotFocus()
フォーカスを得た時、失った時に呼ばれる・・・と思うのですが、起動時に一度gotFocus()がコールされたことを確認出来ただけでlostFocus()がコールされることは確認できませんでした。
iPhoneアプリケーションの場合、フォーカスを失う=アプリケーション終了の様な気もするのですが・・・ペンディングとさせて下さい。
- gotMemoryWarning()
メモリ警告を検知した時にコールされます。
- deviceOrientationChanged()
デバイスの向きが変わった時にコールされます。
縦+正面:1 縦+逆さ:2 縦+左90°:3 縦+右90°:4 上向き:5 下向き:6
プロジェクト名を変更する
若干話が前後しますが、プロジェクト名を自作アプリケーション用に変更します。 開いているプロジェクトを一回閉じて、ファイルをリネームします。 「iPhoneEmptyExample.xcodeproj」→「testApr.xcodeproj」、「ofxiphone-Info.plist」→「testApr-info.plist」
リネームした「testApr.xcodeproj」を開くと「ofxiphone-Info.plist」が赤色のまま残っていると思いますので、プロジェクトから削除後「testApr-info.plist」を改めて追加します。
続いてターゲットを「emptyExample」→「testApr」に変更し、「情報を見る」で「Packaging」ー「info.plistファイル」を「testApr-info.plist」に変更すれば完了です。 (念のため、再度「ビルドと実行」が正常に行われることを確認して下さい。)
実際に作成したアプリケーションのサンプルはこちらで紹介しています。
「おもしろきこともなき世をおもしろく」いわゆるIT業界はそういうものだと思っています。こんなことが出来たらいいな!という仮想が、現実にリンクする面白い業界です。紆余曲折を経てそんな業界でお世話になっているアフタヌーンエンジニアのブログです。
