cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
来源:互联网 发布:粒子群算法详解和实例 编辑:程序博客网 时间:2024/05/20 11:32
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>
总结:以上方法实现了背景显示、背景元素移动等方法。
0 0
- cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
- Cocos2d-x之显示精灵Sprite
- Cocos2d-x 之显示精灵 Sprite
- cocos2d-x 精灵 Sprite
- cocos2d-x 3.x 精灵表单动画(Sprite Sheet Animation)实现思路
- 如何使用动画和精灵表单 Cocos2d-x 2.1.4
- 如何使用动画和精灵表单 Cocos2d-x 2.1.4
- 图片精灵sprite动画插件
- 【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
- Cocos2d-x 3.2下精灵Sprite的创建
- [Cocos2D-x For WP8]Sprite精灵
- cocos2d-x Sprite精灵对象创建方法
- Cocos2d-x Lua中Sprite精灵类
- cocos2d-x 基本概念 骨骼动画 vs. 精灵表(sprite sheets)
- cocos2d-x 改变sprite图片
- cocos2d-x创建精灵动画
- cocos2d-x精灵动画帧
- 学习COCOS2D-x 精灵动画 实现一个《热血传奇》开门效果
- Cocos2d-x3.2中 不让物体飞出屏幕
- 响应式布局学习笔记
- 国内P2P网贷平台的运营模式
- java内存好文章网址
- 【poj3150】Cellular Automaton
- cocos2d-x 3.2 |如何实现图片显示和精灵动画 Sprite
- gcc文件后缀及c程序与传统c++常用的头文件与标准c++头文件
- 【记录】s5pv210烧写裸机文件的方法之烧写到SD卡
- Maria 项目接口重构的主要功能及其实现
- 判断出栈顺序的合理性
- java 树形结构
- PHP+MYSQL+Apache
- git rebase 使用体会
- wineqq不显示图盘图标