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"
@inte易做图ce 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 =
补充:移动开发 , 其他 ,
- 更多wap疑问解答:
- 新人求助QPainter
- 为什么程序都退出了还可以收到推送?如果大多设备都可以推送那运营商怎么办?
- qt 4.7 sqlserver2000 存储过程调用
- 关于ANDROID4.0.1编译问题!
- Android FrameBuffer读屏幕30秒后mmap失败
- 联通粗定位用java程序如何来请求和接受数据
- 为什么QT运行Android平台的程序时,mouseMoveEvent事件响应的间隔时间很长??????????
- android与PC蓝牙通讯
- 指定大小的label 内容可变,如果内容超出label的宽度,将未能显示的部分显示在另一个label上
- Android调试
- android如何通过wifi连接无线打印机
- 运行程序,release目录下产生一个乱码文件夹
- 分享个某机构最新安卓资料,自己验证了
- service启动不起来,掉不了service connection
- 求助:QT5.0 没有QPrinter吗