7.cocos精灵创建和绘制
- 创建Layer层的类
- T2LayerSprite.h
- #pragma once
- #include "cocos2d.h"
- USING_NS_CC;
- class T2LayerSprite:public CCLayer
- {
- public:
- static CCScene * scene();
- CREATE_FUNC(T2LayerSprite);
- bool init();
- };
- #pragma once
- T2LayerSprite.h
红色代码处是一个宏定义:
- #define CREATE_FUNC(__TYPE__) \
- static __TYPE__* create() \
- { \
- __TYPE__ *pRet = new(std::nothrow) __TYPE__(); \
- if (pRet && pRet->init()) \
- { \
- pRet->autorelease(); \
- return pRet; \
- } \
- else \
- { \
- delete pRet; \
- pRet = nullptr; \
- return nullptr; \
- } \
- }
等同于:
- static T1LayerAnchorPoint*create();
- T1LayerAnchorPoint*T1LayerAnchorPoint::create()
- {
- T1LayerAnchorPoint *pRet = new T1LayerAnchorPoint();
- if (pRet && pRet->init())
- {
- pRet->autorelease();
- }
- else
- {
- delete pRet;
- pRet = NULL;
- }
- return pRet;
- }
调用顺序:scene->create->init->scene
2.T2LayerSprite.cpp
- #include "T2LayerSprite.h"
- CCScene * T2LayerSprite::scene()
- {
- CCScene *scene = CCScene::create();
- T2LayerSprite *layer = T2LayerSprite::create();
- scene->addChild(layer);
- return scene;
- }
- bool T2LayerSprite::init()
- {
- CCLayer::init();
- //加载背景
- //获取背景资源,并设置大小
- CCSprite *bg = CCSprite::create("spirit/background.jpg",CCRectMake(,,,));
- //获取屏幕大小
- auto winSize = CCDirector::sharedDirector()->getWinSize();
- //设置锚点
- bg->setAnchorPoint(ccp(, ));
- //设置位置
- bg->setPosition(ccp(,));
- //添加背景资源
- addChild(bg);
- //加载图片
- CCImage *image = new CCImage();
- //图片初始化
- image->initWithImageFile("spirit/plant.png");
- //创建2D纹理
- CCTexture2D *texture = new CCTexture2D();
- //纹理自动释放
- texture->autorelease();
- //纹理用图片初始化
- texture->initWithImage(image);
- //用纹理创建精灵
- CCSprite *plant = CCSprite::createWithTexture(texture);//纹理
- //设置位置
- plant->setPosition(ccp(,winSize.height/));
- //添加图片
- addChild(plant);
- //加载一张大图在缓存里
- //创建纹理
- CCTexture2D *texture2 = CCTextureCache::sharedTextureCache()->addImage("spirit/bullet.png");
- //用纹理初始化精灵
- CCSprite *bullet = CCSprite::createWithTexture(texture2);
- //设置位置
- bullet->setPosition(ccp(, winSize.height / + ));
- //添加
- addChild(bullet);
- //加载一组帧
- CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("spirit/zombie.plist");
- //此方法是先获取帧再加载
- //CCSpriteFrame *sf = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("z_1_attack_03.png");
- //CCSprite* zombie = CCSprite::createWithSpriteFrame(sf);
- //此方法是直接通过名字加载
- CCSprite *zombie = CCSprite::createWithSpriteFrameName("z_1_attack_03.png");
- //设置位置
- zombie->setPosition(ccp(, winSize.height / ));
- //添加
- addChild(zombie);
- //创建动作
- CCJumpBy *by = CCJumpBy::create(, ccp(, ), , );
- //zombie精灵设置跳跃动作
- zombie->runAction(CCRepeatForever::create(by));
- //获取单个帧
- CCSpriteFrame *frame = CCSpriteFrame::create("spirit/p_1_01.png", CCRectMake(, , , ));
- //通过帧初始化精灵
- CCSprite *sun = CCSprite::createWithSpriteFrame(frame);
- //设置位置
- sun->setPosition(, winSize.height / + );
- //添加
- addChild(sun);
- return true;
- }
运行截图:
7.cocos精灵创建和绘制的更多相关文章
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...
- COCOS2D-X 精灵创建随笔
CCSprite类中创建Sprite的方法都是静态的: static CCSprite* create ( ) 创建一个无图片显示的精灵,可随后用 setTexture 方法设置显示图片 stati ...
- 使用Cocos studio创建一个简单的project
前不久我接到了一个项目,项目要求使用Cocos2d-X的最新版本号,Cocos2d-X3.4.对于一直在陶醉在Cocos2d-X2.2.3的世界中的我开说,使用Cocos2d-X3.4忽然认为有点不适 ...
- Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo
近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...
- cocos源码分析--绘制顺序LocalZOrder、GlobalZOrder、OrderOfArrival
使用规则 节点的渲染顺序跟节点的三个成员变量有关(_localZOrder._globalZOrder._orderOfArrival)分别对应三个设置函数setLocalZOrder.setGlob ...
- Delphi如何创建并绘制EMF图形文件
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- e674. 创建并绘制加速图像
Images in accelerated memory are much faster to draw on the screen. This example demonstrates how to ...
- [unity3d插件]2dtoolkit系列一 创建精灵
从今天开始要做一个2d游戏,由于之前都是做cocos2dx的,然后接触了一段时间的unity3d,都是做3D方面的东西,得知要做2d游戏还是有点开心的,或许因为不想丢失之前的2d游戏的一些思想,然后接 ...
- cocos中使用VS自动创建工程的方法
为了省事,直接用VS编写了一小段代码,将cocos手动创建工程的命令改用system来执行,免去了手动输入命令的麻烦 其中: -d F:\\cocos2d-x-3.2-projects 是你要存放的工 ...
随机推荐
- html页面全屏化显示
<html><head><script>// toggle full screen function toggleFullScreen() { if (!docum ...
- CF 965 B. Battleship
Arkady is playing Battleship. The rules of this game aren't really important.There is a field of n×n ...
- 运维派 企业面试题3 为上题中的 "十个随机字母_test.html" 文件 更名
Linux运维必会的实战编程笔试题(19题) 企业面试题3 #将试题2中创建的文件名uopiyhgawe_test.html# test-->修改为omg,html-->HTML 方法一: ...
- 因子问题 I - Ugly Numbers
题目: Ugly numbers are numbers whose only prime factors are 2, 3 or 5 . The sequence 1, 2, 3, 4, 5, 6, ...
- iOS开发——根据数组中的字典中的某一元素排序
数组中的元素是字典,字典中的某一个元素,比如说姓名,现在需要按照姓名的首字母来排序,怎么搞? 做法很简单,在字典中加一个元素,保存姓名的首字母,然后用下面的方法排序. - (void)sortWifi ...
- 临时的js方法
//楼层的js var scroChange; //楼层跳转 function FloorGo(domId){//传入目标的id clearInterval(scroChange); var scro ...
- ubuntu -redis
ubentu 布置redis,基本操作和CentO感觉相差不多,主要是使用命令有所差异 mark如下: ① download ② tar -zxvf xxx.tar.gz ③ cd redis-xxx ...
- ifsta---统计网络接口活动状态
ifstat命令就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具.ifstat工具系统中并不默认安装,需要自己下载源码包,重新编译安装,使用过程相对比较简单. 下 ...
- web——前后端通信原理
前端向后台传输数据: 传输方法:post get 区别: (1)get:用于从服务器获取数据,将参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...
- Java基础学习总结(25)——Log4j快速入门教程
log4j是一个优秀的日志组件,基本上所有的java开发项目都会用到它.下面将自己学习的一些心得总结一下,方便以后学习. log4j在项目中都不会单独使用,至少是我写过的java项目中没有.一般来说l ...