Hello World

0.9.x以降のバージョンで有効です.
hello_world.jpg

この例では画面上にラベルをレンダリングする基本的な手順を示します.
一部の高度なオプションの初期化については提示されていないためとてもシンプルな例と言えます.
一度この例を理解してしまえば, 次のhello_actionsサンプルも読むことができるようになるでしょう.

インポートヘッダー

c / c++ / その他の言語のようにいくつかのヘッダーをインポートする必要があります.

 
// UIWindow, NSAutoReleasePool, その他のオブジェクトの為に必要なインポートです
#import <UIKit/UIKit.h>
 
// インタフェースをインポートします
#import "HelloWorld.h"
 

レイヤー

HelloWorldの実装部です.

 
// HelloWorld の実装
@implementation HelloWorld
 
// "init"メソッド上でインスタンスの初期化を行う必要があります
-(id) init
{
	// ここでは常に"super"のinitメソッドを呼び出します
	// アップルは"super"の戻り値に"self"を割り当てる事を推奨しています
	if( (self=[super init] )) {
 
		// ラベルを生成して初期化します
		CCLabel* label = [CCLabel labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];
 
		// ディレクターにウインドウサイズをたずねます
		CGSize size = [[CCDirector sharedDirector] winSize];
 
		// ラベルのポジションをスクリーンの中心にします
		// 'ccp'はポイントの生成を助けるマクロで、"CoCos Point"を意味しています
		label.position =  ccp( size.width /2 , size.height/2 );
 
		// このレイヤーに子要素としてラベルを追加します
		[self addChild: label];
	}
	return self;
}
 
// "dealloc"メソッドでは、保持している全てのオブジェクトを解放する必要があります
- (void) dealloc
{
	// 何か解放するものがある場合は、ここで解放してください
	// 今回の例では何も解放する必要はありません
	// cocos2dは"ラベル"のような全ての子要素を自動的に解放してくれます
 
	// "super dealloc"を呼び出すのを忘れないでください!
	[super dealloc];
}
@end
 

アプリケーションデリゲート

こちらはアプリケーションデリゲートの実装です. おそらく全てのゲームでこのようなアプリケーションデリゲートを持たせる事になります. 現時点ではこのコードを理解しているかどうかは重要ではありません.

 
@implementation AppController
 
// "window"はプロパティです。. @synthesizeはアクセサメソッドを生成します.
@synthesize window;
 
// アプリケーションのエントリーポイント
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
	// CC_DIRECTOR_INIT() マクロの仕様
	//
	// 1. EAGLViewをゼロビットデプスフォーマットとRGB565レンダーバッファで初期化
	// 2. EAGLViewマルチタッチ: 無効
	// 3. UIWindowを生成して"window" varに割り当てる("window"はあらかじめ宣言されている必要がある)
	// 4. 親となるEAGLViewを新しく生成されたウインドウとする
	// 5. ディレクターをウインドウとリンクさせる
	// 5a. 5.)が失敗したならNSTimerディレクターを使用
	// 6. 60FPSでの実行を試みる
	// 7. FPSの表示: しない
	// 8. デバイスの向き: ポートレイト
	// 9. ディレクターをEAGLViewに接続
	//
	CC_DIRECTOR_INIT();
 
	// 共有されるディレクターを取得する
	CCDirector *director = [CCDirector sharedDirector];
 
	// レイヤーを生成する前にランドスケープモード(横向き)に設定します
	[[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeLeft];
 
	// FPSの表示をオンにする
	[director setDisplayFPS:YES];
 
	// マルチタッチを有効にする
	EAGLView *glView = [director openGLView];
	[glView setMultipleTouchEnabled:YES];	
 
	// 空のシーンを生成して初期化する
	CCScene *scene = [CCScene node];
 
	// HelloWorldレイヤーを生成して初期化する
	CCLayer *layer = [HelloWorld node];
	// メインシーンの子要素としてHelloWorldレイヤーを追加する
	[scene addChild:layer];
 
	// 実行!
	[director runWithScene: scene];
}
 
 
- (void) dealloc
{
	[window release];
	[super dealloc];
}
 
@end
 

メインエントリーポイント

Objective-CでもC言語やC++と同様にmainメソッドがメインエントリーポイントです.

 
int main(int argc, char *argv[]) {
	// 安全のためこれらのラインはそのまま残してください
	NSAutoreleasePool *pool = [NSAutoreleasePool new];
	UIApplicationMain(argc, argv, nil, @"AppController");
	[pool release];
	return 0;
}
 

ヘッダーファイル

そしてこちらがヘッダーファイルです.

 
// このファイルをインポートすることで, cocos2dの全てのクラスをインポート出来ます
#import "cocos2d.h"
 
// アプリケーションデリゲートクラス
@interface AppController : NSObject <UIAccelerometerDelegate, UIAlertViewDelegate,  UITextFieldDelegate, UIApplicationDelegate>
{
	// メインのUIWindow
	// OpenGLビューはこのUIWindowにアタッチされます
	UIWindow *window;
}
 
// メインのUIWindowのプロパティを作成します
@property (nonatomic, retain) UIWindow *window;
@end
 
// HelloWorld レイヤー
@interface HelloWorld : CCLayer
{
}
@end
 

添付ファイル: filehello_world.jpg 877件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-24 (日) 17:14:25 (2586d)