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

その10


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

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


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


その2
HelloWorld


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


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


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


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


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


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


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


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



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


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


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




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


まずはボールを表示する

前回は、テンプレートにある『HelloWorldScene.h/HelloWorldScene.m』というファイルのファイル名を変更して、それにあわせてソースに記載された import 関係を修正することをしてみました。


今回は、ほんのちょっと中身をいじってみましょう。




その準備として、ここで使うボール画像のファイルを用意しましょう。
ball.png という名前にします。
適当な画像が無かったら、これを『画像を保存』してください。





そして、(グループとファイル)→(追加)→(既存のファイル)で、プロジェクトに登録してください。


そうしたらいよいよ、ソースファイルをいじります。


前にも書いたような記述に似ていますが、この3行をソースのどこかに追加します。

Sprite *imgObject = [[Sprite alloc] initWithFile:@"ball.png"];

imgObject.position = ccp(100,100);

[self addChild:imgObject];




どのファイルのどこに追加するかわかりましたか?



そう、ballLayer.m の -(id) init{} の中ですね。



-(id) init

{

if( (self=[super init] )) {

Label* label = [Label labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];

CGSize size = [[Director sharedDirector] winSize];

label.position =? ccp( size.width /2 , size.height/2 );

[self addChild: label];


Sprite *imgObject = [[Sprite alloc] initWithFile:@"ball.png"];

imgObject.position = ccp(100,100);

[self addChild:imgObject];



}

return self;

}





コメントを削除してまとめると、こんな感じになるはずです。



ビルドすると、ちゃんと表示されたと思います。




次はちょっとややこしく

ボールを表示することができました。
でも、ここまでは『その2』でやっていますね。

この先、ソースを修正していくのですが、実はちょっとややこしい場所が出てきます。
それは、

+(id) scene


この部分です。


普通であれば、ここは

-(id) scene


こう書きたいところなのです。

その違いは何ぞや、というと…
いやな言葉が出てきますよ…


『クラス・メソッド と インスタンス・メソッド の違い』です。


いやでしょう!

ですので、ここの説明はすっとばして、『どうすればゲーム作りに近づくか』ということに重きをおいて、次の回の解説を進めたいと思います。
ここでは、同じメソッド(関数)でも、実行のさせ方に違いがあって、そのさせ方の違いが、プラスとマイナスの記号の違いだ、ぐらいに思っておいてください。


クラスとインスタンスの説明を読みたい方は、個別エントリーのこちらをどうぞ!

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