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 是你要存放的工 ...
随机推荐
- Hadoop框架基础(二)
** Hadoop框架基础(二) 上一节我们讨论了如何对hadoop进行基础配置已经运行一个简单的实例,接下来我们尝试使用eclipse开发. ** maven安装 简单介绍:maven是一个项目管理 ...
- C#自定义事件监视变量变化
首先监视定义类 class Event { public delegate void tempChange(object sender, EventArgs e); public event temp ...
- [BJWC2011]禁忌 AC 自动机 概率与期望
#include<cstdio> #include<algorithm> #include<cstring> #include<string> #inc ...
- [Jsoi2010]连通数 bitset + Floyd
Code: #include<cstdio> #include<algorithm> #include<string> #include<cstring> ...
- MYSQL8.0的安装方法
1.下载zip安装包: MySQL8.0 For Windows zip包下载地址:https://dev.mysql.com/downloads/file/?id=476233,进入页面后可以不登录 ...
- cookie 实现记住用户名演示 通过代码迅速理解cookie
// 登录页 可直接 tomcat部署 测试 1 package com.itheima.login; import java.io.IOException; import java.io.Print ...
- shell应用之批量添加用户实例
这里要实现功能介绍 读取一个用户列表文件 给列表中的用户添加随机密码需要包含大小写字符和数字 保存对应的用户和密码文件 这些用户属于同个用户组 1.列表文件 [root@mail ~]# cat li ...
- PostgreSQL创建只读用户
创建用户及指定密码: CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 设置用户默认事务只读: alter user readonly se ...
- iostat---监视磁盘CPU相关信息
iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分 ...
- 紫书 例题 10-22 UVa 1640(数位统计)
这道题的题解有几个亮点 一个是每次只统计一个数字来简化思维 一个是统计当前位数的时候分三个部分来更新答案 具体看代码,有注释 #include<cstdio> #include<cs ...