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. ListView 适配器实现getviewtypcount() 数组越界IndexOutOfBoundException

    ListView中Item的多布局显示,需要用到了getViewTypecount和getItemViewType这两个重写方法,但是做完后出现了如下提示错误:java.lang.ArrayIndex ...

  2. 关于node的聊天室错误

    Deprecationwarning:process,EventEmitter is deprecated use require ('events')instead 关于node的聊天室错误 > ...

  3. CSS W3SCHOOLS

    https://www.w3schools.com/csS/css3_buttons.asp

  4. [HAOI2007]理想的正方形 单调队列 暴力

    Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; #d ...

  5. Studio3T 破解,无需命令计划任务

    最近项目中使用到了MongoDB,苦于命令行不好操作,所以就寻觅了一下MongDB的GUI管理工具,最终找到了Studio3T,功能非常强大,但是苦于只有评估版本30天,最可气的是一时手贱,修改了系统 ...

  6. 为OLED屏添加GUI支持3:字库

    为OLED屏添加GUI支持3:字库 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:STM3 ...

  7. 3.React Native在Android中自己定义Component和Module

    React Native终于展示的UI全是Native的UI.将Native的信息封装成React方便的调用. 那么Native是怎样封装成React调用的?Native和React是怎样交互的? V ...

  8. vijos - P1176奇怪的数列 (递归 + 找规律)

    P1176奇怪的数列 Accepted 标签:[显示标签] 背景 一天.学军数学小组的成员遇到了一个奇怪的数列,正巧信息小组的你碰到了他们. 于是他们把这个数列展示给你-- 描写叙述 这个数列是这种: ...

  9. Codeforces 528A Glass Carving STL模拟

    题目链接:点击打开链接 题意: 给定n*m的矩阵.k个操作 2种操作: 1.H x 横向在x位置切一刀 2.V y 竖直在y位置切一刀 每次操作后输出最大的矩阵面积 思路: 由于行列是不相干的,所以仅 ...

  10. vue2.0-transition动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...