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

       #pragma once
      #include "cocos2d.h"
      USING_NS_CC; class T2LayerSprite:public CCLayer
      {
      public:
      static CCScene * scene();
      CREATE_FUNC(T2LayerSprite);
      bool init();
      };

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

 #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精灵创建和绘制的更多相关文章

  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. C语言基础-第五章

    流程控制 1.顺序结构 顺序结构是指程序将按照书写的顺序一步步执行程序. 2.选择结构 2.1但分支结构语句 if(表达式){语句} 2.2双分支结构 if(表达式){}else if{} else{ ...

  2. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)

    2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范 ...

  3. hadoop ha

    https://blog.csdn.net/daydayup_668819/article/details/70815335 https://www.jianshu.com/p/8a6cc2d7206 ...

  4. MyEclipse for mac 快捷键

    原文出处:http://blog.csdn.net/ray_seu/article/details/17384463 一直比较欣赏myeclipse的快捷键,网上搜索了一圈,发现windows平台下面 ...

  5. [USACO07MAR]每月的费用Monthly Expense

    题目:POJ3273.洛谷P2884. 题目大意:有n个数,要分成m份,每份的和要尽可能小,求这个情况下和最大的一份的和. 解题思路:二分答案,对每个答案进行贪心判断,如果最后得出份数>m,则说 ...

  6. python3 geohash 导入错误及解决

    方法一: pip3 install  python-geohash 方法二: 1.保证 pip3 install geohash 包 2. 进入包的下载目录 /usr/local/lib/python ...

  7. 监控web服务(http,本地 / 远程监控nginx)

    监控 httpd 服务一: #!/bin/bash #描述: 秒级别监控 http 服务 while [ 1 -lt 2 ] do sleep 10 ai=`netstat -ntl | grep & ...

  8. python 进阶:修饰器的介绍

    参考链接:Python 函数装饰器 我认为python中的装饰器是一个很厉害的功能,他能瞬间提升代码的逼格,但对于我这样的小白来说,别说为所欲为的使用了,就连简单的尝试一下,却也是难于登天.经过长达半 ...

  9. linux学习之多高并发服务器篇(三)

    UDP多播服务器 多播 组播组可以是永久的也可以是临时的.组播组地址中,有一部分由官方分配的,称为永久组播组.永久组播组保持不变的是它的ip地址,组中的成员构成可以发 生变化.永久组播组中成员的数量都 ...

  10. Chrome开启无界面浏览模式Python+Windows环境

    环境:Python 3.5.x + Selenium 3.4.3 + Chromedriver 2.30 + Chrome 60 beta版 + WIN7/WIN10 chrome_options = ...