ちょっとInterface Builderとの付き合い方が分かってきた。
ひとまずviewを作るときは
新規 xib を直接作るんじゃなくて、新規 UIViewController Subclass を作ってそこでついでに xib を作ると良いのだな。
xib とアウトレット・アクションの結びつけも、無理してIB備え付けの機能を使わなくても viewControllerの方から手動でいろいろできるってわけだ。
このへんはエリカ本のおかげでだいぶ助かったな〜
プログラミングのことを書くぞ。I'm gonna write programming-related topics here.
ちょっとInterface Builderとの付き合い方が分かってきた。
ひとまずviewを作るときは
新規 xib を直接作るんじゃなくて、新規 UIViewController Subclass を作ってそこでついでに xib を作ると良いのだな。
xib とアウトレット・アクションの結びつけも、無理してIB備え付けの機能を使わなくても viewControllerの方から手動でいろいろできるってわけだ。
このへんはエリカ本のおかげでだいぶ助かったな〜
実はここまで Interface Builder を使っての作業を避けてきたのだけど、いよいよ対峙せざるを得ない・・・。
最初から全部 IB で作るアプリは参考書を見ればできるんだろうけど、途中から部分的に UIView を使おうとしたりするとかなりドツボ・・・。なんでこんな全体像が掴めないんだ。頭悪いのかオレ・・・。
しかし、なんで XCode と Interface Builder の関係ってこんなにモヤッとしてるの?
素人的に考えると、UIをグラフィカルに設計したあかつきには、
IBOutlet* piyopiyo .... みたいなアウトレット宣言が並んだ .h と、あと、viewDidLoad みたいな基本動作のひな形が並んだ .m が同時に作成されて、それをインポートしたらすぐ使える、みたいなのをイメージするのだけど、なんか妙に M-V-C 設計を押しつけられてるせいかストレートに行かない。
把握してしまえば難しくないんだろうけど、自分の中に無い考え方で設計されてるツールを使うのって本当に苦痛・・・。
Ad Hoc distributionが失敗した理由は、
Debug構成を元にターゲット構成を変更していたからだった。
これは凡ミスだよなぁ・・・。
配布するんだからDebugじゃダメだわさ。
でもiPhoneSDK初心者には難しいッス;
ひとまずRelease構成を元に各種設定を変更したら
うまくいきました。よかった。
最近開発関係は休んでいたのだが久々にiPhoneの方を再開。
しばらくチェックしてない間にiPhone関係の書籍増えたねえ。
・・・というわけで数冊購入して知識収集。
■iPhone Core Audioプログラミング(永野 哲久)
オーディオ関係は、単純なプレイバックの話を扱っているものは多かったけど、低レベルのバッファ操作とかはまったく謎だったのでその辺解説してくれてて助かる。
■OpenGLで作るiPhone SDKゲームプログラミング(横江 宗太)
やっぱゲームならOpenGLだべさ・・・と思ってもなかなかiPhoneに特化したOpenGL解説って無かったのでこれまた助かる。
■The iPhone Developer's Cookbook: Building Applications with the iPhone 3.0 SDK (2nd Edition) (Erica Sadun)
In-App PurchaseとかP2P通信とかその他もろもろ幅広く扱ってて、かつ各所で評判が良かったっぽいので購入。訳本も出ていたが、カッコつけて原書で。(訳がひどいという評判もあったし)
どの本もサンプル豊富なんで、まずはサンプルの改造から初めてみますかね〜
Ad HocビルドでiPhoneアプリを他の人のiPhoneに転送してテスト、
というのをやってみたんだが
・・・・動かん;
手順が多すぎてどこで間違えたか追跡しきれん;
またちょっとiPhoneアプリの方が保留になりそうだから
忘れないうちにいろいろメモしておきたいのだが
後で思い出して書くというのはなかなか難しいなぁ。
でも思い出したらまた自分用メモを書こう。
■cocos2dのリファレンスをXCode内で読めるようにする方法:
http://www.cocos2d-iphone.org/archives/358
サラッと書いてあるけどちょっと混乱したな。
まずDoxygenなるものをインストールして、
そのあと cocos2d-iphone-0.8.2.tar.gz に含まれてた
cocos2d-iphone.xcodeprojを開くという手順なのね。
で、あとはリンク先にあるようにビルドすれば完成、と。
ひとまずこれで、右クリック->定義をAPIリファレンスで探す が使えるようになって便利。
■AtlasSprite
v0.8からSpriteじゃなくてAtlasSpriteの方が推奨になっている様子(たぶん)。
一個一個のスプライトにそれぞれ画像ファイルを割り当てるSpriteと違って、AtlasSpriteは大きな画像ファイルから一部を切り取ってスプライトに用いる仕組みをとっている。
なんか面倒だな、と一瞬思ったが、スプライトの数が増えたりアニメーションのコマ数が増えたりすると画像がひとつのファイルにまとまっているのは便利だ。
あとさらに、従来のSpriteに比べるとそうとう高速、というメリットもあるらしいが、そんなにたくさんスプライトを使うゲームを作ってないので そこのありがたみはまだよくわからん。
AtlasSpriteの追加方法:
mgr = [AtlasSpriteManager spriteManagerWithFile:@"sprites.png"];
[self addChild:mgr z:priority];
spr = [AtlasSprite spriteWithRect:CGRectMake(x1, y1, w1, h1) spriteManager:mgr];
[mgr addChild:spr];
※x1,y1,w1,h1はsprites.png内から切り取ってくる範囲。
別の範囲を切り取って別のスプライトを作りたければ
spr2 = [AtlasSprite spriteWithRect:CGRectMake(x2, y2, w2, h2) spriteManager:mgr];
[mgr addChild:spr2];
(11/14訂正)
CGRectMakeの3個目・4個目の引数は右下の座標じゃなくて
長方形の大きさでした。間違えて思いっきりハマッた・・
あとAtlasSpriteのスプライトはデフォルトでアンチエイリアスがかかってる。
→AtlasSpriteManagerのアンチエイリアスを解除する方法:
[mgr.texture setAliasTexParam];
iPhoneアプリの方を再開してみるが、
しばらく離れていた間にiPhoneOSはver3.1になってるし
cocos2dはver0.8になってるし、
ただでさえ忘れかけてるのにもう混乱の極みです。
でもcocos2dのテンプレートができたのはラクになったな〜。