1. 创建Layer层的类
    1.   T2LayerSprite.h

      1. #pragma once
      2. #include "cocos2d.h"
      3. USING_NS_CC;
      4.  
      5. class T2LayerSprite:public CCLayer
      6. {
      7. public:
      8. static CCScene * scene();
      9. CREATE_FUNC(T2LayerSprite);
      10. bool init();
      11. };

红色代码处是一个宏定义:

  1. #define CREATE_FUNC(__TYPE__) \
  2. static __TYPE__* create() \
  3. { \
  4. __TYPE__ *pRet = new(std::nothrow) __TYPE__(); \
  5. if (pRet && pRet->init()) \
  6. { \
  7. pRet->autorelease(); \
  8. return pRet; \
  9. } \
  10. else \
  11. { \
  12. delete pRet; \
  13. pRet = nullptr; \
  14. return nullptr; \
  15. } \
  16. }

等同于:

  1. static T1LayerAnchorPoint*create();
  1. T1LayerAnchorPoint*T1LayerAnchorPoint::create()
  2. {
  3. T1LayerAnchorPoint *pRet = new T1LayerAnchorPoint();
  4. if (pRet && pRet->init())
  5. {
  6. pRet->autorelease();
  7. }
  8. else
  9. {
  10. delete pRet;
  11. pRet = NULL;
  12. }
  13. return pRet;
  14.  
  15. }

调用顺序:scene->create->init->scene

    2.T2LayerSprite.cpp

  1. #include "T2LayerSprite.h"
  2.  
  3. CCScene * T2LayerSprite::scene()
  4. {
  5. CCScene *scene = CCScene::create();
  6. T2LayerSprite *layer = T2LayerSprite::create();
  7. scene->addChild(layer);
  8. return scene;
  9. }
  10.  
  11. bool T2LayerSprite::init()
  12. {
  13. CCLayer::init();
  14.  
  15. //加载背景
  16. //获取背景资源,并设置大小
  17. CCSprite *bg = CCSprite::create("spirit/background.jpg",CCRectMake(,,,));
  18. //获取屏幕大小
  19. auto winSize = CCDirector::sharedDirector()->getWinSize();
  20. //设置锚点
  21. bg->setAnchorPoint(ccp(, ));
  22. //设置位置
  23. bg->setPosition(ccp(,));
  24. //添加背景资源
  25. addChild(bg);
  26.  
  27. //加载图片
  28. CCImage *image = new CCImage();
  29. //图片初始化
  30. image->initWithImageFile("spirit/plant.png");
  31. //创建2D纹理
  32. CCTexture2D *texture = new CCTexture2D();
  33. //纹理自动释放
  34. texture->autorelease();
  35. //纹理用图片初始化
  36. texture->initWithImage(image);
  37. //用纹理创建精灵
  38. CCSprite *plant = CCSprite::createWithTexture(texture);//纹理
  39. //设置位置
  40. plant->setPosition(ccp(,winSize.height/));
  41. //添加图片
  42. addChild(plant);
  43.  
  44. //加载一张大图在缓存里
  45. //创建纹理
  46. CCTexture2D *texture2 = CCTextureCache::sharedTextureCache()->addImage("spirit/bullet.png");
  47. //用纹理初始化精灵
  48. CCSprite *bullet = CCSprite::createWithTexture(texture2);
  49. //设置位置
  50. bullet->setPosition(ccp(, winSize.height / + ));
  51. //添加
  52. addChild(bullet);
  53.  
  54. //加载一组帧
  55. CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("spirit/zombie.plist");
  56. //此方法是先获取帧再加载
  57. //CCSpriteFrame *sf = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("z_1_attack_03.png");
  58. //CCSprite* zombie = CCSprite::createWithSpriteFrame(sf);
  59. //此方法是直接通过名字加载
  60. CCSprite *zombie = CCSprite::createWithSpriteFrameName("z_1_attack_03.png");
  61. //设置位置
  62. zombie->setPosition(ccp(, winSize.height / ));
  63. //添加
  64. addChild(zombie);
  65.  
  66. //创建动作
  67. CCJumpBy *by = CCJumpBy::create(, ccp(, ), , );
  68. //zombie精灵设置跳跃动作
  69. zombie->runAction(CCRepeatForever::create(by));
  70.  
  71. //获取单个帧
  72. CCSpriteFrame *frame = CCSpriteFrame::create("spirit/p_1_01.png", CCRectMake(, , , ));
  73. //通过帧初始化精灵
  74. CCSprite *sun = CCSprite::createWithSpriteFrame(frame);
  75. //设置位置
  76. sun->setPosition(, winSize.height / + );
  77. //添加
  78. addChild(sun);
  79. return true;
  80. }

运行截图:

7.cocos精灵创建和绘制的更多相关文章

  1. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

  2. COCOS2D-X 精灵创建随笔

    CCSprite类中创建Sprite的方法都是静态的: static CCSprite* create ( )  创建一个无图片显示的精灵,可随后用 setTexture 方法设置显示图片 stati ...

  3. 使用Cocos studio创建一个简单的project

    前不久我接到了一个项目,项目要求使用Cocos2d-X的最新版本号,Cocos2d-X3.4.对于一直在陶醉在Cocos2d-X2.2.3的世界中的我开说,使用Cocos2d-X3.4忽然认为有点不适 ...

  4. Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo

    近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...

  5. cocos源码分析--绘制顺序LocalZOrder、GlobalZOrder、OrderOfArrival

    使用规则 节点的渲染顺序跟节点的三个成员变量有关(_localZOrder._globalZOrder._orderOfArrival)分别对应三个设置函数setLocalZOrder.setGlob ...

  6. Delphi如何创建并绘制EMF图形文件

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. e674. 创建并绘制加速图像

    Images in accelerated memory are much faster to draw on the screen. This example demonstrates how to ...

  8. [unity3d插件]2dtoolkit系列一 创建精灵

    从今天开始要做一个2d游戏,由于之前都是做cocos2dx的,然后接触了一段时间的unity3d,都是做3D方面的东西,得知要做2d游戏还是有点开心的,或许因为不想丢失之前的2d游戏的一些思想,然后接 ...

  9. cocos中使用VS自动创建工程的方法

    为了省事,直接用VS编写了一小段代码,将cocos手动创建工程的命令改用system来执行,免去了手动输入命令的麻烦 其中: -d F:\\cocos2d-x-3.2-projects 是你要存放的工 ...

随机推荐

  1. html页面全屏化显示

    <html><head><script>// toggle full screen function toggleFullScreen() { if (!docum ...

  2. 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. 运维派 企业面试题3 为上题中的 "十个随机字母_test.html" 文件 更名

    Linux运维必会的实战编程笔试题(19题) 企业面试题3 #将试题2中创建的文件名uopiyhgawe_test.html# test-->修改为omg,html-->HTML 方法一: ...

  4. 因子问题 I - Ugly Numbers

    题目: Ugly numbers are numbers whose only prime factors are 2, 3 or 5 . The sequence 1, 2, 3, 4, 5, 6, ...

  5. iOS开发——根据数组中的字典中的某一元素排序

    数组中的元素是字典,字典中的某一个元素,比如说姓名,现在需要按照姓名的首字母来排序,怎么搞? 做法很简单,在字典中加一个元素,保存姓名的首字母,然后用下面的方法排序. - (void)sortWifi ...

  6. 临时的js方法

    //楼层的js var scroChange; //楼层跳转 function FloorGo(domId){//传入目标的id clearInterval(scroChange); var scro ...

  7. ubuntu -redis

    ubentu 布置redis,基本操作和CentO感觉相差不多,主要是使用命令有所差异 mark如下: ① download ② tar -zxvf xxx.tar.gz ③ cd redis-xxx ...

  8. ifsta---统计网络接口活动状态

    ifstat命令就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具.ifstat工具系统中并不默认安装,需要自己下载源码包,重新编译安装,使用过程相对比较简单. 下 ...

  9. web——前后端通信原理

    前端向后台传输数据: 传输方法:post  get 区别: (1)get:用于从服务器获取数据,将参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...

  10. Java基础学习总结(25)——Log4j快速入门教程

    log4j是一个优秀的日志组件,基本上所有的java开发项目都会用到它.下面将自己学习的一些心得总结一下,方便以后学习. log4j在项目中都不会单独使用,至少是我写过的java项目中没有.一般来说l ...