天天看點

【Cocoa(mac) Application 開發系列之一】建立第一個application—電腦

終于HTTP與Socket伺服器以及cocos2dx之間的通信各種架構成功完成後,現在抽時間學習下mac下的cocoa application,當然啦 主要用于做編輯器。

很多童鞋問我為什麼不用swing swt等Java的編輯器,這樣能跨平台。其實對于java寫編輯器呢,Himi在還沒有接觸ios平台之前做android時自己已經寫過java的地圖編輯器和簡單動作編輯器。當然啦比較簡單,不使用Java進行編寫編輯器的原因主要有三點:

1. 基于Cocos2dx做遊戲了,基本上就用不到windows系統了。

2. 不管哪個平台的編輯器,其實都是一樣的,寫出的資料檔案哪個平台都能正常解析出來的。

3. 個人原因吧,Himi喜歡mac下的東東,而且呢,基本上Himi 的工作期間99%都在mac下,雖然裝有雙系統,各種切也不友善哈哈;

ok,不扯了,那麼本篇簡單入門下Cocoa application吧;

首先安裝Xcode,這個東東,神器一樣的東東不解釋;

OK,打開Xcode,建立一個項目;如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/11.png"></a>

一路下去後我們建立好了第一個cocoa application,雖然是個空項目,但是基本的Menu和window 已經自帶了。

OK,首先在AppDelegate.h 和AppDelegate.m 下編寫一點小代碼:

<a href="http://blog.51cto.com/xiaominghimi/969963#">?</a>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<code>//</code>

<code>//  AppDelegate.h</code>

<code>//  CountApp</code>

<code>//  Created by Himi on 12-6-3.</code>

<code>//  Copyright (c) 2012年 Himi. All rights reserved.</code>

<code>#import &lt;Cocoa/Cocoa.h&gt;</code>

<code>@interface AppDelegate : NSObject &lt;NSApplicationDelegate&gt;</code>

<code>{</code>

<code>    </code><code>IBOutlet NSButton *btn1;</code>

<code>    </code> 

<code>    </code><code>IBOutlet NSButton *btnResult;</code>

<code>    </code><code>IBOutlet NSTextField *tfShow ;</code>

<code>    </code><code>IBOutlet NSTextField *tfResult;</code>

<code>}</code>

<code>@property (assign) IBOutlet NSWindow *window;</code>

<code>-(IBAction)btnPress:(id)sender;</code>

<code>@end</code>

29

30

31

32

33

34

35

<code>//  AppDelegate.m</code>

<code>#import "AppDelegate.h"</code>

<code>@implementation AppDelegate</code>

<code>@synthesize window = _window;</code>

<code>- (</code><code>void</code><code>)applicationDidFinishLaunching:(NSNotification *)aNotification</code>

<code>    </code><code>// Insert code here to initialize your application</code>

<code>-(IBAction)btnPress:(id)sender{</code>

<code>    </code><code>if</code><code>(sender == btn1){</code>

<code>        </code> 

<code>        </code><code>NSString *str = [NSString stringWithFormat:@</code><code>"%@%@"</code><code>,[tfShow stringValue],@</code><code>"1"</code><code>];</code>

<code>        </code><code>[tfShow setStringValue:str];</code>

<code>    </code><code>}</code><code>else</code> <code>if</code><code>(sender == btnResult){</code>

<code>        </code><code>[tfResult setStringValue:[tfShow stringValue]];</code>

<code>    </code><code>}</code>

簡單說下代碼:

1 . NSButton — 按鈕 ;

NSTextField  文本條;

2.  IBoutlet :一般都說叫“插座變量”,Himi則喜歡說“仍”來形容;比如 IBOutlet NSButton *btn1 說通俗些就是把 btn1這個對象從代碼中扔出來,能讓我們的Interface Builder識别;

3. IBAction :動作,如果一個方法傳回值是IBAction,則表示這個方法是由IB 界面的對象觸發;

OK,下面接着打開MainMenu.xib檔案:

a) 剛才就說啦,xcode為我們生成項目時,已經把基礎的window和Menu都建立好了,而且啟動項目後執行main.m入口函數中會預設加載這個MainMenu.xib檔案啦;

b) 這裡Himi簡單加入了12個Button(Push Button)和兩個TextField,還有一個image well做背景;如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/21.png"></a>

OK,然後要做的隻有兩步,首先在選中你左側的 App Delegate如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/33333.png"></a>

然後看你的項目最右側Utilities視窗:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/32.png"></a>

在這裡你就可以看到你之前在代碼中扔出來的一些對象和方法了。比如btn1,tfResult, 方法btnPress等,那麼細心的童鞋可能看到有個btn後面是個“!”感歎号,這個表示對應的對象找不到了,因為大家看到之前代碼中根本沒有對應扔出所謂的btn,原因是之前Himi的NSButton對象是起名字btn,後來改名字了,是以這裡提醒了,大家這裡要注意下;

然後将我們這些扔出來的對象跟你想對應控件關聯一下吧,加入這裡我們連接配接btn1,如下圖:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/22.png"></a>

其他的大家按照此方式連接配接吧,函數也一樣哦,如果你想讓你的btnPress函數接受哪些控件觸發後相應次函數,那麼也一樣連接配接就OK啦。

當然除此之外有個簡單的連接配接方法,就是hold住你的control鍵,然後滑鼠點選xib中左側App delegate然後move到你想關聯的元件,然後松開滑鼠選中你希望連接配接的代碼中扔出來的對象即可;如下圖所示:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/12.png"></a>

那麼這裡Himi隻是簡單的将btn1,btnResult,和兩個textfield進行關聯,用于簡單的示範,并沒有把這個電腦也完整。。。大家不要這裡吐槽我什麼标題黨 - -。真沒必要寫完整,寫完整了就是浪費時間不是麼~ 要效率學習哈哈;

OK,回頭分析下AppDelegate代碼:

在 -(IBAction)btnPress:(id)sender{}函數内;

首先判斷響應的組建是否是btn1,如果是OK,讓剛才在xib中最上面的textfield(tfShow)顯示出來,如果響應的是btnResult(“=”等号)那麼我就讓tfShow使用者輸入的都列印到我們window最下方的textfield(tfResult)上;

OK,下面是這個簡單application的示範截圖:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/211.png"></a>

本文轉自 xiaominghimi 51CTO部落格,原文連結:http://blog.51cto.com/xiaominghimi/969963,如需轉載請自行聯系原作者