博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d游戏 如何显示分数 分数变化
阅读量:6712 次
发布时间:2019-06-25

本文共 3399 字,大约阅读时间需要 11 分钟。

在cocos2d中,我们大多时间需要对时间或者是所取得的分数进行显示,比如得到了一定的奖励之后,会对分数有所增加。显示必须有一个分数的png的Sprite源图片,除此之外,还需要有一个fnt文件,对里面分数的位置进行标识。

1。一个png源

这不用说了,一张图片上比如,依次显示0123456789

2。fnt文件

名字和图片名字一致,扩展名不同 info face="EurostileBold" size=32 bold=1 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1

common lineHeight=33 base=26 scaleW=256 scaleH=256 pages=1 packed=0 page id=0 file="bitmapFont.png" chars count=10 char id=32   x=0     y=0     width=0     height=0     xoffset=0     yoffset=26    xadvance=8     page=0  chnl=0 char id=48   x=0     y=0     width=19     height=24     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=49   x=19     y=0     width=15     height=23     xoffset=2     yoffset=4    xadvance=20     page=0  chnl=0 char id=50   x=34     y=0     width=19     height=23     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=51   x=53     y=0     width=20     height=24     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=52   x=73     y=0     width=21     height=23     xoffset=0     yoffset=4    xadvance=20     page=0  chnl=0 char id=53   x=94     y=0     width=19     height=24     xoffset=2     yoffset=4    xadvance=20     page=0  chnl=0 char id=54   x=113     y=0     width=20     height=24     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=55   x=133     y=0     width=19     height=23     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=56   x=152     y=0     width=20     height=24     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0 char id=57   x=172     y=0     width=19     height=24     xoffset=1     yoffset=4    xadvance=20     page=0  chnl=0

3。分数的读取显示

以下是0。8版本cocos2d的方式,

BitmapFontAtlas *scoreLabel = [BitmapFontAtlas bitmapFontAtlasWithString:@"0" fntFile:@"bitmapFont.fnt"];     [self addChild:scoreLabel z:5 tag:kScoreLabel];     scoreLabel.position = ccp(160,430);

简单说明:读取bitmapFont的fnt初始化,而不是用Sprite的方式,加到self的manager里面,z轴层次是5,加一个tag算是ID的标识吧。然后把分数初始化到屏幕的某一个位置上。

 

接下来这一段是关注于如何变化的:

 首先是一个bonus,顾名思义,一个奖励的初始化,比如是一个金币。 

AtlasSprite *bonus = (AtlasSprite*)[spriteManager getChildByTag:kBonusStartTag+currentBonusType]; if(bonus.visible) { //如果这个金币可见         CGPoint bonus_pos = bonus.position; //得到金币的位置 float range = 20.0f; //金币这个精灵的大小 if(bird_pos.x > bonus_pos.x - range &&            bird_pos.x < bonus_pos.x + range &&            bird_pos.y > bonus_pos.y - range &&            bird_pos.y < bonus_pos.y + range ) {
switch(currentBonusType) { //判断金币是多少分的奖励 case kBonus5: score += 5000; break; case kBonus10: score += 10000; break; case kBonus50: score += 50000; break; case kBonus100: score += 100000; break; } //先判断这个运动的精灵是否进入的金币的范畴,随后若是进入了,看能得到多少奖励。 NSString *scoreStr = [NSString stringWithFormat:@"%d",score]; BitmapFontAtlas *scoreLabel = (BitmapFontAtlas*)[self getChildByTag:kScoreLabel]; [scoreLabel setString:scoreStr]; id a1 = [ScaleTo actionWithDuration:0.2f scaleX:1.5f scaleY:0.8f]; id a2 = [ScaleTo actionWithDuration:0.2f scaleX:1.0f scaleY:1.0f]; id a3 = [Sequence actions:a1,a2,a1,a2,a1,a2,nil]; [scoreLabel runAction:a3]; [self resetBonus]; } }

 1。把得到的分数转换成String类型。

2。通过getByTag的方式,得到刚才初始化过的那个分数。

3。给显示分数的那个Label设置当前分数。

4。a1,a2,a3算是实现了分数的滚动,改变过程中的时差,显得不是很突兀。

 

哦了,先说这么多。 来自tweejump 的code学习。

转载于:https://www.cnblogs.com/pengyingh/articles/2388471.html

你可能感兴趣的文章
JAVA 几种引用类型学习
查看>>
Android WindowManager悬浮窗:不需要申请权限实现悬浮
查看>>
偶遇到客户的奇葩需求
查看>>
禅道 11.3 版本发布,主要完善细节,修复 bug
查看>>
无人机新用途,可精确识别危险海洋生物并向游泳者发出预警
查看>>
国家天文台-阿里云天文大数据联合中心成立
查看>>
Lua的文件操作
查看>>
更好的以太坊,会是怎样的?
查看>>
计算与推断思维 六、可视化
查看>>
阿里建“猫茂”线下购物中心,将实现新零售技术的真正落地
查看>>
高等教育转型:确保数据可用性是关键
查看>>
【基础】这15种CSS居中的方式,你都用过哪几种?
查看>>
网站的通用注册原型设计
查看>>
硬纪元AI峰会实录|公子小白严汉明:这是智能机器人最好的时代
查看>>
CES Asia专题|臻迪携“高颜值”家族集体亮相
查看>>
验证码对抗之路及现有验证机制介绍
查看>>
canvas绘制星空
查看>>
bootstrap大图轮播手机端不能手指滑动解决办法
查看>>
转置字符串,其中单词内的字符需要正常
查看>>
Spring的lookup-method标签
查看>>