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();
};
- 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 是你要存放的工 ...
随机推荐
- 使用与不适用@RequestBody注解的区别
1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...
- PostgreSQL Replication之第七章 理解Linux高可用(6)
7.6 PostgreSQL和高可用性 数据库是我们日常数字生活的一部分,并期望它们快速工作. 您浏览网上论坛吗?那个帖子在数据库中.您看医生吗?您的医疗记录在数据库中.您在网上购物吗?那个货物,您的 ...
- HTML标签和文档结构
HTML标签与文档结构 HTML作为一门标记语言,是通过各种各样的标签来标记网页内容的.我们学习HTML主要就是学习的HTML标签. 那什么是标签呢? #1.在HTML中规定标签使用英文的的尖括号即` ...
- 参考《深度学习之PyTorch实战计算机视觉》PDF
计算机视觉.自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向. 计算机视觉学习,推荐阅读<深度学习之PyTorch实战计算机视觉>.学到人工智能的基础概念及Python 编程技 ...
- 紫书 例题 10-15 UVa 1638(递推)
从大到小安排杆子 分三种情况 (1)插到最左边,那么左边看到了杆子会多一个 (2)插到最右边,那么右边看到了杆子会多一个 (3)插到中间边,那么不影响左边和右边看到的杆子数 具体看代码 #includ ...
- uvalive 6669 hidden tree(好壮压dp)
题目见option=com_onlinejudge&Itemid=8&page=show_problem&problem=4681">here 题意:给一个序列 ...
- 18.angularJS服务
转自:https://www.cnblogs.com/best/tag/Angular/ 服务 AngularJS功能最基本的组件之一是服务(Service).服务为你的应用提供基于任务的功能.服务可 ...
- quartz 持久化 数据库表
此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...
- 关于Javascript的forEach 和 map
本篇博客转载自 https://blog.fundebug.com/2018/02/05/map_vs_foreach/ 如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法 ...
- 【基础篇】Android手动卸载虚拟机程序
adb shell (进入模拟器自带的操作系统) cd data/app (切换到apk的安装目录) rm apk文件全称 例 : rm com.test.TestActivity.apk (手动删除 ...