(サンプル) 加速度センサーで画像を動かす
先日の本を読みつつ、少しずつコードを書いていこうと思ってます。
- 作者: 所友太,京セラコミュニケーションシステム株式会社
- 出版社/メーカー: リックテレコム
- 発売日: 2010/01/12
- メディア: 単行本
- 購入: 25人 クリック: 329回
- この商品を含むブログ (42件) を見る
この本もいっぺん通り読んだのですが、
実際にコードを書いて試していなかったので、
ケース別に書いて試していこうと思っています。
部分部分をクラスにして再利用していければと思います。
加速度センサーのサンプルをまず試しに書いて実行を・・・
と思ったのですが書きながら?なところや不明瞭なところがあちらこちらに・・・
□deallocメソッド
ARCを用いている場合、明示的に書く必要ないみたい。
また親クラスのdeallocメソッドも明示的に呼び出してはいけないみたい。
[super dealloc];
と書いた時点で!出ました。
メモリ管理のこの部分はARCが自動で行ってくれるので変に触れない方がいいみたい。
ARCのことも深く知らないですが・・・。メモリ管理難しい。
Objective-C ARCによるメモリ管理
http://cx5software.com/blog/2011/12/31/objective-c-memory_management_by_arc/
Objective-C メモリ管理 確保と解放
http://apple.creator.ms/objective-c-002.html
□delegate
処理を委託して一括管理させる為に使用、効率よくするために。
デリゲート元は宣言し、デリゲート先が実装を行い処理を任せる(ハンドリングを行う)
イベント発生時の検出をデリゲート元が行えばよく、実装部分を一括管理出来る。
というふうに考えているのですが・・・それで本当にあってるの?難しい。
http://mycode.snow69it.com/コーディング/言語/objective-c/【objective-c】デリゲートを実装する/
//加速度センサーからの値を取得開始
UIAccelerometer* accelerometer = [UIAccelerometer sharedAccelerometer]; accelerometer.updateInterval = 1.0 / 60.0; //60Hz(1秒に60回更新) accelerometer.delegate = self;
//加速度センサーからの通知
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{ speedX_ += acceleration.x; //x軸方向へ転がるスピードを加速させる speedY_ += acceleration.y; //y軸方向へ転がるスピードを加速させる CGFloat posX = imageView_.center.x + speedX_; //スピード分ボールをx軸方向への移動 CGFloat posY = imageView_.center.y + speedY_; //スピード分ボールをy軸方向への移動 //端に当たったら跳ね返る if (posX < 0.0) { posX = 0.0; speedX_ *= -0.4; //0.4倍の速度で跳ね返る }else if (posX > self.view.bounds.size.width) { posX = self.view.bounds.size.width; speedX_ *= -0.4; //0.4倍の速度で跳ね返る } if (posY < 0.0) { posY = 0.0; speedY_ *= -0.4; //0.4倍の速度で跳ね返る }else if (posY > self.view.bounds.size.height) { posY = self.view.bounds.size.height; speedY_ *= -0.4; //0.4倍の速度で跳ね返る } imageView_.center = CGPointMake(posX, posY); }
mac上だとセンサーの確認出来ないのでなんとも言えないですが・・・
デバイス登録しなおして確認してみよう。それまで保留。