バランスを作ってみた

2010. 03. 03
例によって『シングルトン』とか『デリゲート』が理解できなくて更新できませんでした。

一冊分読み終えたら保留事項をまとめて書き出し、別の本を読み進めつつ解決していきたいと思っています。
かえって保留事項が増えそうな気がしないでもありませんが・・・

最近気付いたこと。
プログラミング用語のWikiは(素人には)役に立たない
・・・それってWikiとして意味がないんじゃ?

同じWikiでも『福井高専IT研究会OfficialWiki』は役立ちます。

●光るフレームの位置

手順5で『xを0に、Yを0に』とありますが、中央座標を示しているので『xは160に、Yは240に』となります。

●アウトレットの接続

アウトレットを接続する際、本書通りに『背景→ボール→光るフレーム』と配置していくと、光るフレームが全画面で最上面にきます。

するとLayoutメニューで後にもって行くこともできなくて、ボールにアウトレットを接続できない状態になります。

先程フレームの座標を修正したばかりですが、仕方ないのでAttributesでxを一旦0にし、光るフレームをずらします。

188

これで下のボールにもアクセスできますので、ボールのアウトレットを接続し、その後xを160に戻します。

●加速度センサの処理

加速度センサを使うには

・UIAccelerometerというシングルトンオブジェクトを使う
・sharedAccelerometerクラスメソッドを呼び出してインスタンスを作る
・センサの受信間隔の設定
・インスタンスをデリゲートに指定する

とあります。

シングルトンは、アプリケーション内でインスタンスを一つだけ作り、グローバル変数のように使い回すものです。

インスタンスが一つだけ存在することを保証するために、インスタンス生成にはsharedAccelerometerという特殊な方法を使います。

センサの受信間隔は最短10msecですが、通常はそこまで必要ないでしょう。
(今回の場合は20msec)

デリゲートは面倒な処理を丸投げしてやってもらう機能なのですが、ここでは丸投げする相手を『self』で自分自身に設定しているので、少し違和感が有ります。
(自分に丸投げするなら意味が無いんじゃ?という意味で)

これは加速度センサがシングルトンオブジェクトと特殊で、インスタンスの生成だけではなく、データの受信もデリゲートオブジェクトを通して行うためです。
(デリゲートは自動生成されるので、使わざるを得ない)

また、本文中でAppleのサンプルコード『AccelerometerGraph』が紹介されていますが、アップデートされていまして、現在公開されているVersion 2.1はこんな感じです。

189

それと、本書ではコードの追加などはグレイの囲みで示されているのですが、245ページの『手順3 プロトコルを追加する(257ページ、4行)』

@interface BalanceViewController : UIViewController <UIAccelerometerDelegate>

は囲みで表記しておらず、見落としがちなので注意してください。

※2010.3.13訂正
『245ページ』のところを『254ページ』と書いていました。申し訳有りません。

フィルタについてですが、要約すると

・ローパスフィルタ:低周波を通し、高周波を除く→安定的な加速度変化を得る
・ハイパスフィルタ:高周波を通し、低周波を除く→瞬間的な加速度変化を得る

となり、webブラウザやメモ帳など加速度変化に緩慢なものはローパス、ゲームなどの加速度変化に即応する必要があるものはハイパスを使います。
(必ず使うというのではなく、必要に応じて採用する)

●ボールの移動

248ページ中央の囲みにある最後の行の『speedY = 0.0』は不要です。

●ボールの衝突処理

positionやspeedといった変数はdouble型なのに、条件文では定数を整数で書いてるけどいいのかな?というのをふと思いました。
特に問題なくコンパイルも実行もできるからいいのかもしれません。

250ページの『図2−15 ボール跳ね返り時の速度の変化』で、(2)ボールから生えているベクトルy1はy2の誤りです。



参考文献

iOSアプリケーションプログラミングガイド

福井高専IT研究会OfficialWiki

UIView Class Reference

iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩iPhone SDKの教科書―Cocoa Touchプログラミング、最初の一歩
(2009/03/18)
赤松 正行

商品詳細を見る






Bose QuietComfort 20
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
08 | 2017/09 | 10
Sun Mon Tue Wed Thu Fri Sat
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR