今日もこの本の内容から

- 作者: 横江宗太(株式会社パンカク)
- 出版社/メーカー: インプレスジャパン
- 発売日: 2009/12/18
- メディア: 単行本
- 購入: 18人 クリック: 256回
- この商品を含むブログ (44件) を見る
第2章のハエたたきゲームをつくり始めましたが、SDK4.2での壁に再びぶつかりました。
この本ではビューとレンダラーを連携するように記述されていますが、そこがうまくいきません。
ビュー側(EAGLView.m)に次のコード
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch=[touches anyObject];
CGPoint pt = [touch locationInView:self];
float glX = (pt.x / 320.0f) * 2.0 -1.0;
float glY = (pt.y / 480.0f) * -3.0 +1.5;
[renderer touchedAtX:glX andY:glY];
}
レンダラー側(ES1Renderer.m)に次のコード
- (void) touchedAtX:(float)x andY:(float)y { NSLog(@"%f,%f がタッチされました",x,y); }
を書いてビュー側から、レンダラー側のメソッドを呼び出して、連携させているようです。(全体が無いと意味が通じないでしょうが)
iOS SDK4.2では、レンダラーのインスタンスを保持している renderer という変数は存在していないので動かないのも当然ですが。
どうすれば良いか悩んでいたのですが、初期化ルーチンの中で直接ビューを参照している部分を見つけました。
結局レンダラー側(SDK4.2では ◯◯◯◯ViewController.m)の中に書けば良いみたいです。
連携させなくても、これ自身がViewを持っているんですね。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch=[touches anyObject];
CGPoint pt = [touch locationInView:self.view];
float glX = (pt.x / 320.0f) * 2.0 -1.0;
float glY = (pt.y / 480.0f) * -3.0 +1.5;
NSLog(@"%f,%f がタッチされました",glX,glY);
}
これでまた先に進めそうです。
よろしければ、ボタン↓押してくださいませ。

にほんブログ村
