這部分我們要新增怪物檢視了,首先我們看一下下面這張圖:
這就是我們所要實現的效果圖,我們很容易就能看到其相似的地方每個怪物顯示的內容都差不多。
我們這裡需要新增兩個類monsterinformation(檢視怪物資訊主介面)和monsterinformationcell(單個怪物顯示資訊塊)
首先我們來看一下monsterinformation.h檔案**:
#import
#import"cocos2d.h"
@class enemy;
@class hero;
@inte***ce monsterinformation : cclayer
//當前圖層怪物陣列
@property (nonatomic,retain) nsmutablearray *mosterarray;
//怪物列表數量
@property(nonatomic,assign)intmosterlistcount;
//是否移除介面
@property(nonatomic,assign)boolremoveview;
//載入怪物列表
-(void)viewinit:(enemy*) monster;
//更新損失血量
-(void)updatelosshp;
@end
這個類有三個屬性,第乙個就是儲存當前圖層怪物資訊的陣列,第二個怪物列表的引用計數,第三個就是用於判斷介面是否可以移除。
然後我們開始新增monsterinformation.m檔案**:
#import"monsterinformation.h"
#import"monsterinformationcell.h"
#import"monster.h"
#import"hero.h"
@implementation monsterinformation
@synthesize mosterarray;
@synthesize mosterlistcount;
@synthesize removeview;
-(id)init
returnself; }
-(void)viewinit:(enemy*) monster
else }
if (!sa)}}
-(void)updatelosshp
}} while (enemyhp >0);
[cell updatelosshp:_herohp];}}
}@end
我們的檢視怪物資訊主介面有了,下面我們來講一下monsterinformationcell這個類,先看一下頭檔案:
#import
#import"cocos2d.h"
#import"monster.h"
@inte***ce monsterinformationcell :cclayer
@property(nonatomic,retain)
enemy
*enemy;
@property(nonatomic,assign)intcount;
//初始化怪物資訊標籤
-(void)viewinit:(enemy*) monster;
//更新損失生命
-(void)updatelosshp:(int) losshp;
@end
我們這個類只有乙個需要更新的標籤就是勇士損失血量標籤,還有兩個屬性,乙個是怪物,乙個是怪物個數。還有兩個方法,乙個是初始化標籤,乙個是用於更新勇士要損失的血量。下面我們來看一下實現檔案中的**:
#import"monsterinformationcell.h"
@implementation monsterinformationcell
@synthesizeenemy;
@synthesizecount;
-(id) init
returnself; }
-(void)viewinit:(enemy*) monster
//更新損失生命
-(void)updatelosshp:(int) losshp
@end
這裡面全都是標籤就不多說了。我們再來看以下monsterinformation中的更新血量的方法,通過遍歷陣列得到怪物的資訊,進行損失血量的判斷並更新。好了這兩個類建好了,下面就是該在那裡用、怎麼用的問題了。有兩種方式一種是在遊戲中需要檢視的時候初始化它;另一種就是直接在載入地圖的時候建立它,把它當成地圖的一部分,然後使用是時候直接呼叫它。兩種方式的優略我就不講了,有興趣的可以兩種都試試。這裡我使用的是第二種方式,所以我們下面就要在titledmap中新增**了。
首先我們要新增乙個屬性:
@property(nonatomic,retain)
monsterinformation
*monsterinfor;
並在初始化方法中例項化monsterinfor:
self
.monsterinfor= [[[monsterinformation
alloc
]init
]autorelease];
然後我們再新增乙個用於建立我們的怪物資訊介面的方法:
-(void)createmonsterinformation}}
return; }
在這裡我們遍歷怪物圖層獲取怪物資訊並新增到怪物資訊介面中。
然後我們在初始化方法中呼叫它。
[self
createmonsterinformation];
下面就讓我們在game01中呼叫它吧!
昨天我們已經把圖示新增上了,現在我們就來新增它的響應事件:
if(openpredict) }
}}這部分**新增到樓層飛行器觸控檢測下面,並在樓層飛行器移除方法下面
截圖如下:
這部分**中有乙個開關變數openpredict,控制是否開啟洞悉權杖,應為我們的遊戲中有乙個道具只有吃到它的時候才可以使用它,所以我們要在道具檢測的if(value4)中新增:
openpredict=
yes;
另外還呼叫到乙個新的方法onpredict:
//更新並載入檢視怪物資訊介面
-(void)onpredict
}這樣我們的洞悉權杖就可以使用了,不過為了測試我們可以把openpredict這個開關變數在初始化方法中賦值為yes。執行一下看看是否跟我們開頭部分的效果圖一樣呢。如果一樣的話我們就來新增這部分最後一部分**吧!
這部分**要實現的功能是:把已死亡怪物的資訊從我們的怪物資訊檢視介面中移除掉。顯然這部分**要新增到移除怪物的方法(removeenemy)中去,**如下:
monsterinformationcell*removecell =
nil;
for(monsterinformationcell*cell
inself
.curtitlemap.monsterinfor.mosterarray) }
}//如果有怪物資訊標籤被移除則從陣列中刪除,並重新布局介面
if (removecell)
}好了我們這部分內容就新增完畢了。執行一下試試吧!截圖:
到這裡我們的遊戲教程就快要結束了!!!
Cocos2D iPhone開發思考
主頁 最近看了 ios 5 cocos2d遊戲開發實戰 第2版 這本書,對cocos2d這款遊戲引擎產生了濃厚的興趣。由於本書並沒有對cocos2d的前世今生做明確的交代,出於對cocos2d遊戲引擎的喜愛,我在網際網路搜尋了cocos2d相關的歷史,也看了其作者ricardo自己對cocos2d的...
關於cocos2d iphone小總結
1.導演通常只有乙個,因此這個物件是單例 signleton cocos2d iphone框架已經預定義了該例項,不需建立,我們直接使用就可以。2.director 物件管理場景的方法主要有以下幾個 1.主程式啟勱,顯示第乙個場景的方法 void runwithscene scene scene 2...
cocos2d iphone之魔塔20層第五部分
這部分教程源 連線 這一章我們就要開始在game01.m檔案中canmoveto 方法中的if迴圈中添 加相應的事件了,我在製作地圖時圖塊都設定了其屬性如圖 這裡我就要獲取其屬性值 nsdictionary props self.curtitlemap propertiesforgid enemy ...