《23. 瘸腿蛤蟆笔记23cocos2dx3.2 实现血条掉血特效.docx》由会员分享,可在线阅读,更多相关《23. 瘸腿蛤蟆笔记23cocos2dx3.2 实现血条掉血特效.docx(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、瘸腿蛤蟆笔记23实现血条掉血特效上篇回顾本篇名言:医生知道的事如此的少,他们的收费却是如此的高。 马克吐温上篇中,蛤蟆学习如何实现Dota中技能冷却特效。这次我们还是用同一个东西,但是实现不一样的特效。我们不能小看任何一个小功能,小功能也会有大逼格的哦。让我们开始吧。理论介绍本次的理论知识是上篇学习的是一致的,蛤蟆就不啰嗦了。具体步骤我们还是在文件中找到bool HelloWorld:init()函数,加入如下代码。b=100; auto s = Director:getInstance()-getWinSize(); auto to1 = Sequence:createWithTwoActi
2、ons(ProgressTo:create(0, 100), ProgressTo:create(0.5, 0); auto to2 = Sequence:createWithTwoActions(ProgressTo:create(0, 100), ProgressTo:create(2, 0); auto spriteOp = ProgressTimer:create(Sprite:create(xt.png);spriteOp-setType(ProgressTimer:Type:BAR);spriteOp-setMidpoint(Vec2(0,0); spriteOp-setBarCh
3、angeRate(Vec2(1, 0);spriteOp-setOpacity(90);spriteOp-setPosition(Vec2(/2, /2);auto xk = Sprite:create(xk.png);xk-setPosition(Vec2(/2, /2);xk-setPosition(Vec2(/2, /2);auto sprite = ProgressTimer:create(Sprite:create(xt.png); sprite-setType(ProgressTimer:Type:BAR);sprite-setMidpoint(Vec2(0,0); sprite-
4、setBarChangeRate(Vec2(1, 0);sprite-setPosition(Vec2(/2, /2);addChild(xk); addChild(sprite,2000,1);addChild(spriteOp,1000,2); sprite-runAction(to1);spriteOp-runAction(to2);schedule( schedule_selector(HelloWorld:xd),3);接着定义函数:void HelloWorld:xd(float dt)auto c=b-10;auto spriteOp=getChildByTag(2);auto
5、sprite=getChildByTag(1);auto to1 = Sequence:createWithTwoActions(ProgressTo:create(0, b), ProgressTo:create(0.5, c); auto to2 = Sequence:createWithTwoActions(ProgressTo:create(0, b), ProgressTo:create(2, c); if( c = 10)b=c;elseb=100;sprite-runAction(to1);spriteOp-runAction( to2);然后在头文件中类定义中定义函数:void
6、 HelloWorld:xd(float dt);此外在类class HelloWorld : public cocos2d:Layer 定义之外,定义变量bstatic int b=100;编译运行如下图1所示:代码解释下面我们来解释下代码的含义:bool HelloWorld:init()函数中代码解释。b=100;/设置常量b的值 auto s = Director:getInstance()-getWinSize(); /获取窗口大小 auto to1 = Sequence:createWithTwoActions(ProgressTo:create(0, 100), Progress
7、To:create(0.5, 0); /设置进度条动作to1,从100%到0%auto to2 = Sequence:createWithTwoActions(ProgressTo:create(0, 100), ProgressTo:create(2, 0); /设置进度条动作to2,从100%到0%auto spriteOp = ProgressTimer:create(Sprite:create(xt.png);/创建进度条1spriteOp-setType(ProgressTimer:Type:BAR);/设置进度条为BAR,就是条状的意思spriteOp-setMidpoint(Ve
8、c2(0,0);/设置开始位置 spriteOp-setBarChangeRate(Vec2(1, 0); /设置比率,这个表示垂直方向没有变化,只有水平方向变化spriteOp-setOpacity(90);/设置进度条透明度spriteOp-setPosition(Vec2(/2, /2);/设置精灵位置auto xk = Sprite:create(xk.png);/创建一个血条框精灵,这里可有可无xk-setPosition(Vec2(/2, /2); /设置精灵位置auto sprite = ProgressTimer:create(Sprite:create(xt.png);/创建
9、进度条2 sprite-setType(ProgressTimer:Type:BAR);/设置进度条为BAR,就是条状的意思sprite-setMidpoint(Vec2(0,0); /设置开始位置 sprite-setBarChangeRate(Vec2(1, 0); /设置比率,这个表示垂直方向没有变化,只有水平方向变化sprite-setPosition(Vec2(/2, /2); /设置精灵位置addChild(xk);/添加精灵到HelloWorld层 addChild(sprite,2000,1); /添加精灵到HelloWorld层addChild(spriteOp,1000,2
10、); /添加精灵到HelloWorld层 sprite-runAction(to1);/进度条调1用进度条动作,实现掉血spriteOp-runAction(to2); /进度条调2用进度条动作,实现掉血schedule( schedule_selector(HelloWorld:xd),3);/定时3秒,调用xd函数,xd函数主要是实现重复延时,可有可无。HelloWorld:xd函数解释void HelloWorld:xd(float dt)auto c=b-10;/设置变量c 的值,用于减少10%进度auto sprite=getChildByTag(1); /通过Tag获取进度条1au
11、to spriteOp=getChildByTag(2);/通过Tag获取进度条2auto to1 = Sequence:createWithTwoActions(ProgressTo:create(0, b), ProgressTo:create(0.5, c); /设置进度条动作to1,从b到cauto to2 = Sequence:createWithTwoActions(ProgressTo:create(0, b), ProgressTo:create(2, c); /设置进度条动作to2,从b到cif( c = 10)b=c;elseb=100; /设置变量bsprite-runAction(to1); /进度条调1用进度条动作,实现掉血spriteOp-runAction( to2); /进度条调2用进度条动作,实现掉血总结本次我们实现了主角被敌人打的时候掉血情况,采用了两层掉血方式看上去是不是更逼真。本次学习的这个变化不但可以变化血量,还可以用来游戏开始的进度条加载使用。只是可惜啊可惜,蛤蟆的美工实在太烂了(这个也不能怪蛤蟆,蛤蟆用美图秀秀弄的血条难免做的不专业,况且只是用于演示嘛,后续蛤蟆一定用高逼格的图片来)。