2011年3月11日金曜日

【isEqualToString】Objective-C

「isEqualToString」を使うことでif文の条件判定の時などに便利に使用出来そう。

2011年3月6日日曜日

【CCFollow】任意のオブジェクトにカメラを追随させる方法

プレイヤーのスプライトが移動した時など、スプライトに追随してカメラ(表示範囲)を移動させるには「CCFollow」を使う。ターゲットに任意のオブジェクトを指定することにより、自動的にそのオブジェクトが画面のセンターに表示されるようカメラを追随させてくれる。


[layer runAction:[CCFollow actionWithTarget:target worldBoundary:CGRectMake(x, y, width, height)]];

2011年2月25日金曜日

コールバック関数の付け方

CCSprite *sprite = [CCSprite spriteWithFile:@"image.png"];//コールバックを付ける任意のオブジェクト

id doSomething = [CCCallFuncN actionWithTarget:self selector:@selector(doSomething:)];
[sprite runAction: doSomething];


-(void) doSomething:(id)sender
{
}

「CCCallFuncN」の他に「CCCallFunc」「CCCallFuncND」といったタイプもあるらしい。

2011年2月16日水曜日

GDataXMLの使用設定

数あるXMLパーサーのうちの一つである「GDataXML」を使用する際のXCodeの設定。

1)ダウンロードしたGDataXMLのzipファイルを解凍後、中に入っているフォルダ「Source\XMLSupport」 の中から「GDataXMLNode.h」「GDataXMLNode.m」の二つのファイルをプロジェクトに追加する。

2)XCodeのプロジェクト設定にある「All Configurations」がチェックされているか確認する。

3)検索パスの「ヘッダ検索パス」に「/usr/include/libxml2」を追加する。

4)アプリケーションターゲットの情報を見るを選択、もしくはCMD+Iキーで詳細を表示。「一般」タブの「リンク済みライブラリ」の「+」をクリックして「libxml2.dylib」を選択してプロジェクトに追加する。

以上を正しく行わないとエラーが出てCocos2DではGDataXMLやKissXMLが使用出来ないので注意しなければならない。

※プロジェクト設定の「他のリンカフラグ」の項目に「-lxml2」を追加する必要はないので注意する。

2011年2月15日火曜日

サウンドを再生する

以下「softanのブログ(http://blog.livedoor.jp/softan/)」より引用

以前、iPhone SDKで効果音を鳴らすで、AudioToolboxを使い、5秒以内の効果音を鳴らす方法を紹介しましたが、今回は、cocos2d-iPhoneで、もっと長い音楽ファイルも流せる方法を紹介します。
cocos2d-iPhoneでは、サウンドエンジンも組み込まれている為、非常に容易に、mp3を含む様々なファイル形式(wav/caf/aiffもO.K.)の音楽を流す事ができます。

◆ヘッダファイルの読み込み
#import "SimpleAudioEngine.h"

◆音楽ファイルのプリロード
[[SimpleAudioEngine sharedEngine] preloadEffect:@"音楽ファイル名"];
※ 音楽ファイルを一番最初に読み込むにはそれなりに時間がかかるため、事前にプリロードしておいた望ましいです。
cocos2d-iPhoneでは、init内に記述をしておけば良さそうです。

◆音楽を流す
[[SimpleAudioEngine sharedEngine] playEffect:@"音楽ファイル名"];

◆かかっていた音楽を止める
ALuint 変数名 = [[SimpleAudioEngine sharedEngine] playEffect:@"音楽ファイル名"];  
[[SimpleAudioEngine sharedEngine] stopEffect:変数名];  

◆バックグラウンド用の音楽ファイルをプリロードする
[[SimpleAudioEngine sharedEngine] preloadBackgroundMusic:@"音楽ファイル名"];

◆バックグラウンドで音楽を鳴らす
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"音楽ファイル名"];

◆バックグラウンドの音楽を止める
[[SimpleAudioEngine sharedEngine] stopBackgroundMusic];

Cocos2Dでのタッチ操作の検出

CCLayerクラスのプロパティ「isTouchEnabled」に「YES」をセットする。

例:「self.isTouchEnabled = YES;


これにより以下のコールバックメソッドが呼ばれるようになる。(※コードに間違いがあるかもしれません)

– (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
– (BOOL)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
– (BOOL)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
– (BOOL)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

または

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];



- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return TRUE;
}

など

背景色の変更の仕方

Cocos2Dのデフォルトでは背景色はブラックになっている。この背景色をホワイト等の別のカラーに変更する場合は以下のように「HelloWorldScene.h」内の「@interface HelloWorld  CCLayer」から「@interface HelloWorld : CCColorLayer」と変更する。

HelloWorldScene.m」内のイニシャライズ部分も「if( (self=[super initWithColor:ccc4(255,255,255,255)] )) {」のように変更する。「ccc4(255,255,255,255)」の部分を変更すれば背景色を変えることが出来る。