您好,登錄后才能下訂單哦!
在我們創(chuàng)建一個cocos-2d模板之后,系統自動生成一個場景Demo,運行結果顯示HelloWord
創(chuàng)建一個cocos2d ios工程
運行結果,我們點擊Achievments 和 LeaderBoard 會分別跳轉到其他場景
創(chuàng)建工程里面目錄結構
上面的六個.h和.m文件如果需要實現某功能是需要開發(fā)者在里面編輯代碼的,Resouces文件夾用于存放圖片,聲音文件文字文件plist文件等文件,這樣組織便于我們進行管理工程里面文件;libs下的文件就是cocos2d引擎了,存放的是源文件,因為它屬于開源,所以可以看到他底層實現原理;還有常用的framework框架
生成的第一個HelloWord代碼實現全都在HelloWorldLayer.h HelloWorldLayer.h和HelloWorldLayer.m文件中-(id)initf方法中,貼上他的源代碼
// on "init" you need to initialize your instance -(id) init { // always call "super" init // Apple recommends to re-assign "self" with the "super's" return value if( (self=[super init]) ) { // create and initialize a Label CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64]; // ask director for the window size CGSize size = [[CCDirector sharedDirector] winSize]; // position the label on the center of the screen label.position = ccp( size.width /2 , size.height/2 ); // add the label as a child to this Layer [self addChild: label]; // // Leaderboards and Achievements // // Default font size will be 28 points. [CCMenuItemFont setFontSize:28]; // Achievement Menu Item using blocks CCMenuItem *itemAchievement = [CCMenuItemFont itemWithString:@"Achievements" block:^(id sender) { GKAchievementViewController *achivementViewController = [[GKAchievementViewController alloc] init]; achivementViewController.achievementDelegate = self; AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; [[app navController] presentModalViewController:achivementViewController animated:YES]; [achivementViewController release]; } ]; // Leaderboard Menu Item using blocks CCMenuItem *itemLeaderboard = [CCMenuItemFont itemWithString:@"Leaderboard" block:^(id sender) { GKLeaderboardViewController *leaderboardViewController = [[GKLeaderboardViewController alloc] init]; leaderboardViewController.leaderboardDelegate = self; AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; [[app navController] presentModalViewController:leaderboardViewController animated:YES]; [leaderboardViewController release]; } ]; CCMenu *menu = [CCMenu menuWithItems:itemAchievement, itemLeaderboard, nil]; [menu alignItemsHorizontallyWithPadding:20]; [menu setPosition:ccp( size.width/2, size.height/2 - 50)]; // Add the menu to the layer [self addChild:menu]; } return self; }
剛開始接觸,里面很多類都不知道,但是能看懂大部分代碼作用,工程里面自動添加有句釋,又容易理解些
現在我們創(chuàng)建一個自己的場景,
在cocos-2d_2文件下右鍵,選擇New File
出現CCNode Class ,
點擊Next,選擇Subclass of CCLayer,在Next,新建文件名為MyScenen
在Myscene.h里面添加
+(CCScene *) scene;方法,在MyScene.m實現
+(CCScene *)scene { // +(id)node 靜態(tài)初始化 CCScene *scene = [CCScene node]; MyScene *layer = [MyScene node]; // 把MyScene對象layer添加到CCScene對象中 [scene addChild:layer]; // 把CCScene對象返回給調用者 return scene; }
再到IntroLayer.h文件中添加頭文件,在IntrolLayer.m中最后面修改一個方法 -(void) makeTransition:(ccTime)dt ,把HelloWorldLayer替換成MyScene
-(void) makeTransition:(ccTime)dt { [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[MyScene scene] withColor:ccWHITE]]; }
現在在場景上添加一個Label
-(id) init { if( (self=[super init]) ) { // 創(chuàng)建一個標簽,設置字體樣式和大小 CCLabelTTF *label = [CCLabelTTF labelWithString:@"創(chuàng)建一個標簽" fontName:@"Marker Felt" fontSize:64]; // 獲取主窗口大小 CGSize size = [[CCDirector sharedDirector] winSize]; // 設置標簽的場景位置 label.position = ccp( size.width /2 , size.height/2 ); // 把標簽添加到這個 [self addChild: label]; } return self; }
運行效果
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
現在在讓這個Label有點動態(tài)效果,當點擊屏幕時候切換字體大小
在-(id)init方法中添加兩行代碼
-(id) init { if( (self=[super init]) ) { // 創(chuàng)建一個標簽,設置字體樣式和大小 CCLabelTTF *label = [CCLabelTTF labelWithString:@"創(chuàng)建一個標簽" fontName:@"Marker Felt" fontSize:64]; // 獲取主窗口大小 CGSize size = [[CCDirector sharedDirector] winSize]; // 設置標簽的場景位置 label.position = ccp( size.width /2 , size.height/2 ); // 把標簽添加到這個 [self addChild: label]; // 設置標簽Tag屬性,數字可以隨便設,但是要是唯一的 label.tag = 8; // 添加觸摸處理事件 self.isTouchEnabled = YES; } return self; }
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 通過tag屬性訪問Label標簽 CCNode *node = [self getChildByTag:8]; // 驗證返回對象是否一致 NSAssert([node isKindOfClass:[CCLabelTTF class]],@"node is not a CCLabelTTF"); // 類型轉換 CCLabelTTF *label = (CCLabelTTF *)node; // CCRANDOM_0_1();是一個宏定義,用來改變label的scale熟悉 label.scale = CCRANDOM_0_1(); }
看一下運行效果,字體大小都是隨機的
源代碼:http://download.csdn.net/detail/duxinfeng2010/4592145
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。