iT邦幫忙

DAY 4
2

從0開始用Cocos2d for iPhone寫App Game的30天系列 第 4

[Day4] Objective-C程式語法介紹

  • 分享至 

  • xImage
  •  

前文提到Cocos2d的架構,對於他運作方式有了一部分瞭解,但是,對於專案內的程式卻感到相當的困惑,因為Cocos2d for iPhone是由Objective-C移植編寫而成的,Cocos2d引擎API都會透過Objective-C語法呼叫,因此必需對該語法有個基本認知,現在困惑沒關係,今天就來說說那些程式語法。

Objective-C語法介紹:

  • 類別 - 是物件的樣板,裡面包含屬性、方法。
    ex: 狗為類別,那麼就包含著名稱屬性、品種屬性,睡覺的方法,走路的方法。
  • 物件 - 透過類別產生出來的實體。
    ex: 透過的狗的類別產生出物件,給他一個名稱叫小黑,品種叫哈士奇,然後小黑會走路,會睡覺。
  • 方法 - 方法又分為兩種,一種為類別方法,一種為實體方法。差別在於類別方法不用產生物件實體就可以呼叫,而實體方法必需產生實體才可以呼叫

例子如下

Dog類別繼承至NSObject類別
@interface Dog : NSObject

名稱屬性
@property (strong, nonatomic) NSString *name;

(-)號開頭為實體方法,方法名稱為睡覺
- (void)sleeping;

(+)號開頭為類別方法,方法名稱為走路
+ (void)walking;

透過Dog類別產生一個husky實體物件
Dog *husky = [[Dog alloc] init];

設定husky名稱屬性為哈士奇
husky.name = @"哈士奇";

husky收到一個sleeping訊息,呼叫sleeping方法
[husky sleeping];

Dog收到walking訊息,呼叫walking方法
[Dog walking];

對Objective-C語法有個簡單的瞭解後,再讓我們回過頭看看專案的AppDelegate

AppDelegate類別繼承至CCAppDelegate類別
@interface AppDelegate : CCAppDelegate

(-)號開頭為實體方法
回傳值:BOOL
方法名稱:
-application:didFinishLaunchingWithOptions:
(:)號後面為方法參數:
(UIApplication *)application, (NSDictionary *)launchOptions

程式進入點
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

(-)號開頭為實體方法
方法名稱: -setupCocos2dWithOptions:
(:)號後面為方法參數: (NSDictionary*)config

self代表自己本身(AppDelegate)
設定Cocos2d的基本一些參數 ex: 畫面刷新率、FPS資訊
[self setupCocos2dWithOptions:@{ CCSetupShowDebugStats: @(YES) }];

(-)號開頭為實體方法
回傳值: (CCScene *),也就是場景
方法名稱: startScene

Cocos2d啟始場景
-(CCScene *)startScene

(+)號開頭為類別方法
回傳值:(IntroScene *)
方法名稱: +scene
IntroScene收到scene訊息,叫叫scene方法產生一個IntroScene實體物件,並且回傳給該方法
return [IntroScene scene];

透過基本語法瞭解,再看看原先的程式,是不是有更深一層的瞭解呢? 當然Objective-C還有很多沒有被提到,是希望先透過語法概念,方便我們使用Cocos2d引擎與開發遊戲, 而沒提到部分,會再後續配合Cocos2d引擎使用指出說明。


上一篇
[Day3] Cocos2d基本結構與運作方式
下一篇
[Day5] 場景與增加物件
系列文
從0開始用Cocos2d for iPhone寫App Game的30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
henryfan
iT邦新手 5 級 ‧ 2014-10-04 21:44:21

Objective-C 的語法真的很奇特,還好有大大精闢的註解,讓我能有深刻的了解!

我要留言

立即登入留言