トップページへ戻る
つくれる?iPhoneアプリ
cocos2dを使ったiPhoneアプリ制作を解説してみる

その5


どのページでも
ご自由にリンクしてください。

感想ご要望はお気軽に!
info@taskinteractive.com


■順番に解説
・導入
その1
導入


その2
HelloWorld


その3
わからない単語でも安心


その4
いじるファイルと画面構成


その5
ソースにある単語を手探る


その6
実行の順を追って手探る


その7
クラスの名前と素性を手探る


・サンプル1
その8 ボール遊び1
Scene/Layer/Sprite


その9 ボール遊び2
ファイル名を変えてみる


その10 ボール遊び3
ソースをいじってみる



■項目ごとに解説
クラスの解説
その1 クラスって何?


クラスの解説
その2 インスタンスって何?


クラスの解説
その3 オブジェクト指向って何?




企画・販売元タスクインタラクティブ


ソースにある単語を手探る

その3 わからない単語でも安心で書いたとおり、Objective-Cのソースの中には、何を意味しているのかわからない単語がいっぱい出てきます。

すべてをいきなり理解するのは無理ですが、手探りで少しずつ把握していく方法がわかっていれば、ちょっと安心できます。

ここではその方法を解説します。




リファレンスマニュアルに載ってない単語たち

例えば、HelloWorldScene.hの、この部分を見てください。
その後解説がありますが、ざっと読み飛ばすだけでOKです。
ここでは、リファレンスマニュアルには載ってない単語を把握するきっかけが漠然とわかれば大丈夫です。

// When you import this file, you import all the cocos2d classes

#import "cocos2d.h"

// HelloWorld Layer

@interface HelloWorld : Layer

{

}

// returns a Scene that contains the HelloWorld as the only child

+(id) scene;

@end



1行目の // は、コメントです。この // の後ろは、単なるメモ書きなので、実行上は無視されます。
他人様が書いたソースの場合、ここにとても重要な内容やありがたいヒントが書いてあることがありますので、ざっと読みましょう。

次に、

#import "cocos2d.h"

の部分ですが、 #import の後ろにある "cocos2d.h" というファイルを読み込む、という意味です。
なぜ読み込むかというと、当たり前ですが、そちらのファイルに必要なことが書いてあるからです。

言い方を変えると、例えばここで例示している HelloWorldScene.h や、その実行内容が書いてある HelloWorldScene.m のソースを見ても、探し当てたい処理内容などが見つからなかったら、読み込んでいる(#import している)ファイルを見に行けば、そこにお目当ての処理内容が記載されているものを見つけることが出来る、ということです。


次に、これはクラス名を定義しています。

@interface HelloWorld : Layer

@end


@interface HelloWorld これは、 HelloWorld というクラスを定義するよ、ということです。

同じくHelloWorldScene.m を見ると、 @implementation HelloWorld と書いてあるのがわかると思います。

とりあえずは .h と .m の @interface と @implementation が対応すると思ってください。

じゃあその後ろの : Layer は何かというと、、、それは後ほど解説しますが、これも手探りでヒントを見つける重要な手がかりになりますので、

@interface HelloWorld : Layer

を見つけたら、 HelloWorld というクラスを定義するんだ。
それはどうも Layer という言葉と関係があるらしい、ぐらいに思っておいてください。
  ・この解説は → その7 クラスの名前と素性を手探る


次に、

+(id) scene;

こういう記述があります。
これは、 .h では こういうメソッドを作るよ という意味で、それに対応する処理の内容が、 .m の

+(id) scene;

{
 この中に書かれています。
}


後で詳しく解説しますが、、その呼び出しの記述が、
[HelloWorld scene]
でしたね。

なので、ごちゃっと書き出すと、

・ #import "cocos2d.h"
・ @interface HelloWorld : Layer
・ +(id) scene;
・ [HelloWorld scene]

こんな感じの記述の部分は、すべて固有名詞のように、ソース内で独自に名づけられたもので、リファレンスマニュアルを見てもその意味を見つけ出すことは出来ません。

ファイル名だったり、クラス名だったり、メソッド名だったり、独自に定義されたものです。




例題から手探ってみる



これは、その2 HelloWorldで試してみた『cocoTest』というプロジェクトと同じ様に、cocos2dのテンプレートを使って、『cocos2dBall』というプロジェクトを新規作成した画面です。

例えば、cocoTest という名前で新規作成したときにあった、 cocoTestAppDelegate.h という名前だったファイルは、ここでは cocos2dBallAppDelegate.h という名前で存在しています。
プロジェクト名にあわせて、自動で生成してくれているファイルのファイル名がどのように当てはめられているか、見比べてみるとわかりやすいかもしれません。


本格的な手探りは次の項から書きます。