cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
2014-09-08 21:35
483 查看
cocos2d-x 3.2 |如何实现图片显示与精灵动画 Sprite第一部分:图片显示(以背景为例)新建背景类 BackGround BackGround.h如下:
#include <stdio.h> #include "cocos2d.h" using namespace cocos2d; class BackGround:public Node { public: CREATE_FUNC(BackGround); //create方法会调用init bool init(); };BackGround.cpp如下:
#include "BackGround.h" #include "cocos2d.h" using namespace cocos2d; bool BackGround::init() { if (!Node::init()) { return false; } //添加背景图片 auto Gamebk=Sprite::create("bg_2.jpg"); Gamebk->setTag(10);
//设定背景层锚点、坐标、添加背景到场景 Gamebk->setAnchorPoint(Vec2(0,0)); Gamebk->setPosition(Vec2(0,0)); this->addChild(Gamebk); return true; }
<span style="font-size:14px;">第二部分:精灵动画<span style="color: rgb(255, 0, 0);">(以云彩为例)</span></span>
<span style="font-size:14px;color:#ff0000;">分析:要在背景视图上增加</span><span style="color: rgb(255, 0, 0); font-size: 14px; font-family: Arial, Helvetica, sans-serif;">元素:</span><span style="font-size:14px;color:#ff0000;">云彩,因云彩每一帧都在运动,我们可以利用update这个系统函数来管理云彩每帧运动距离</span>
<span style="font-size:14px;">下面将update函数加入BackGround类,并增加一个计数器count 如下:</span>
<span style="font-size:14px;"></span><pre name="code" class="cpp"> void update(float t);<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<pre name="code" class="cpp"> int count;
加入了每帧运动还不够,我们需要在.cpp中创建云彩这个元素 如下:
<pre name="code" class="cpp"> //添加云彩图片auto Clouds=Sprite::create("img_cloud_1.png");Clouds->setScale(0.3, 0.3);this->addChild(Clouds);Clouds->setTag(13);Clouds->setAnchorPoint(Vec2::ZERO);
为了让云彩有随机位置,我们需要利用伪随机初始化云彩位置:
<pre name="code" class="cpp"> int px=rand()%(int)Director::getInstance()->getWinSize().width;int py=rand()%(int)Clouds->getContentSize().height+Director::getInstance()->getWinSize().height;//CCLOG("%d %d ",px,py);Clouds->setPosition(px, py);
OK,接下来我们就要用到刚才添加的update 每帧更新函数以及计数器来设计云彩的移动逻辑了
在BackGround.cpp中实现update函数 如下:
<p class="p1"><span class="s1">void</span> <span class="s2">BackGround</span>::update(<span class="s1">float</span> t)</p><p class="p1">{</p><p class="p2"><span class="s3"> </span>//<span class="s4">移动云彩逻辑</span></p><p class="p3"><span class="s3"> </span>count<span class="s3">=</span>count<span class="s3">+</span><span class="s5">1</span><span class="s3">;</span></p><p class="p1"> <span class="s1">if</span> (<span class="s2">count</span>><span class="s5">1</span>)//当云彩数量大于1,将云彩Y轴每帧-2像素</p><p class="p1"> {</p><p class="p1"> <span class="s1">auto</span> Clouds=<span class="s1">this</span>-><span class="s6">getChildByTag</span>(<span class="s5">13</span>);</p><p class="p1"> Clouds-><span class="s6">setPositionY</span>(Clouds-><span class="s6">getPositionY</span>()-<span class="s5">2</span>);</p><p class="p4"></p><p class="p1"> <span class="s1">if</span> (Clouds-><span class="s6">getPositionY</span>()<-Clouds-><span class="s6">getContentSize</span>().<span class="s2">height</span>)//当云彩Y值小余云彩本省高度时</p><p class="p1"> {</p><p class="p1"> <span class="s1">int</span> px=<span class="s7">rand</span>()%(<span class="s1">int</span>)<span class="s2">Director</span>::<span class="s6">getInstance</span>()-><span class="s6">getWinSize</span>().<span class="s2">width</span>;//x坐标为边框宽度随机值</p><p class="p1"> <span class="s1">int</span> py=<span class="s7">rand</span>()%(<span class="s1">int</span>)Clouds-><span class="s6">getContentSize</span>().<span class="s2">height</span>+<span class="s2">Director</span>::<span class="s6">getInstance</span>()-><span class="s6">getWinSize</span>().<span class="s2">height</span>;<span style="font-family: monospace;font-size:14px; white-space: pre; background-color: rgb(240, 240, 240);">//y坐标为边框高度随机值</span></p><p class="p1"> Clouds-><span class="s6">setPosition</span>(px, py);//将云彩位置设定为随机值</p><p class="p1"> }</p><p class="p1"> }</p><p class="p1">}</p>
总结:以上方法实现了背景显示、背景元素移动等方法。
相关文章推荐
- cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能
- cocos2d-x 3.x 精灵表单动画(Sprite Sheet Animation)实现思路
- Java之简单的图片动态显示(实现类似GIF动画效果)
- qt程序实现多个图片连续显示效果像动画一样
- cocos2d-x如何解决图片显示模糊问题
- (译)如何在cocos2d里面使用动画和spritesheet
- iphone游戏开发之cocos2d (七) 自定义精灵类,实现精灵动画CCAnimation
- PageAdmin如何实现图片切换与文章同时显示效果。
- 如何实现图片的随机生成与显示(转载)
- C#如何实现图片的随机生成与显示(转载)
- .net c# gif动画如何添加图片水印实现思路及代码
- 如何实现动画显示窗口
- 【iphone游戏开发】iphone-Cocos2d游戏开发之四:精灵实现缩放,旋转,跳动,移动等动画
- 如何实现点击页面菜单图片替换并且有动画效果
- 老大要求把Word文档加上公司的标识,公司名文字或者logo图片都可以,但要求是用电脑打开(电子文档时)能看见标识,如果打印出来(纸质文档)就不显示出来,如何实现?
- (译)如何在cocos2d里面使用动画和spritesheet
- 如何实现ComboBox下拉列表显示图片
- 如何在Android中实现图片及动画的缩放和旋转
- Qt 中如何实现对图片设置透明色显示 .
- .net c# gif动画如何添加图片水印实现思路及代码