当前位置:编程学习 > wap >>

cocos2d-iphone之魔塔20层第九部分

我们的游戏大部分功能已经实现了接下来我们就要来完善npc有关内容了,
昨天有个朋友说序章中遇到仙子是有一个剧情的,这个确实有而且游戏中
还有很多npc的剧情,今天我们就开始添加这部分内容吧!
    首先我们要添加一个用于创建npc剧情的类:TalkTonpc,要知道游戏中有很
多与npc交谈的剧情,我们如何用这个类来添加所有的剧情呢,下面我们就来
说一下这些剧情的共性与区别在哪里:
    第一、他们都是由勇士和npc组成,所以我们把这个场景分为两部分一个是
勇士部分,一个是npc部分。
    第二、勇士部分和npc部分都是由一个个谈话窗体组成,所以我们需要再建
一个谈话窗体类TalkCell。
    第三、谈话窗体部分,只有文本内容不一样其它的都是相同的,所以这里我
们还需要在建一个用于控制文本内容的类:TalkCell。
     讲到这里我们的剧情就只差一个文本内容了,那么我们就需要建一个数据类
(NpcTalkText)来存储这些谈话文本了,由于这个类内容太多这里我就不粘贴
代码了,在我们把另外三个类讲解完之后在讲一下这个类。
      下面我们就要开始添加代码部分了:
TalkTonpc.h代码:
[html]  
#import <Foundation/Foundation.h>  
#import "cocos2d.h"  
#import "TalkCell.h"  
#import "NpcTalkText.h"  
  
@interface TalkTonpc : CCLayer   
{  
    //谈话对象npc名称  
    NSString *npcName;  
    //勇士  
    NSString *hero;  
    TalkCell *seltalkCell;     
    //npc谈话内容  
    NpcTalkText *npcTalkText;  
    //跳过菜单  
    CCMenuItemFont *Skip;  
    //当前选中npc对话内容  
    NSMutableArray *selnpcTalkText;  
    //文本编号  
    NSInteger textID;  
    //当前npc类型  
    int selnpcType;  
}  
@property (nonatomic,assign) bool talking;   
-(void)updateWith:(int) type;  
-(void)removeTalking;  
@end  
 
TalkTonpc.m代码:
[html]  
#import "TalkTonpc.h"  
  
@implementation TalkTonpc  
@synthesize talking;  
-(id)init  
{  
    if ((self = [super init]))   
    {    
        npcTalkText = [NpcTalkText getNpcTalkText];  
        //跳过对话  
        Skip = [CCMenuItemFont itemFromString:@"--Skip--" target:self selector:@selector(removetext)];  
        Skip.fontSize = 30;  
        CCMenu *menu = [CCMenu menuWithItems:Skip, nil];  
        menu.position = ccp(455, 100);  
        [self addChild:menu];  
    }  
    return self;  
}  
-(void)addTalking  
{  
    TalkCellText *cellText = [selnpcTalkText objectAtIndex:textID];  
    seltalkCell = [[TalkCell alloc] initWith:cellText];  
    if (cellText.name == @"勇士")   
    {  
        seltalkCell.position = ccp(200, 240);  
    }  
    else  
        seltalkCell.position = ccp(100, 420);  
    [self addChild:seltalkCell];  
}  
-(void)updateWith:(int) type  
{  
    self.talking = NO;  
    textID = 0;  
    selnpcType = type;  
    switch (type)   
    {  
        case 0:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc0;  
            break;  
        case 1:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc1;  
            break;  
        case 2:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc2;  
            break;  
        case 3:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc3;  
            break;  
        case 4:   
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc4;  
            break;  
        case 6:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc6;  
            break;  
        case 7:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc7;  
            break;  
        case 8:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc8;  
            break;  
        case 9:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc9;  
            break;  
        case 10:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc10;  
            break;  
        case 11:  
            selnpcTalkText = nil;  
            selnpcTalkText = npcTalkText.npc11;  
            break;  
        case 12:  
            selnpcTalkText = nil;  
            selnpcTalkText =
补充:移动开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,