Cocos2d-X中实现批处理精灵
使用普通方法实现批处理精灵
在Sprite.h中加入以下的代码
#ifndef __Sprite_SCENE_H__
#define __Sprite_SCENE_H__ #include "cocos2d.h"
USING_NS_CC; class Sprite : public CCLayer
{
public: //初始化层
bool init(); //创建场景
static CCScene* scene(); //响应触摸
bool Sprite::ccTouchBegan(CCTouch* touch, CCEvent*); //用于创建:场景、菜单、层等东西
CREATE_FUNC(Sprite);
}; #endif // __Sprite_SCENE_H__
在Sprite.cpp中加入以下的代码
#include "Sprite.h" USING_NS_CC; //创建场景
CCScene* Sprite::scene()
{
//创建场景
CCScene *scene = CCScene::create(); //创建层
Sprite *layer = Sprite::create(); //将层加到场景上
scene->addChild(layer); //返回场景
return scene;
} //初始化实例句柄
bool Sprite::init()
{
//初始化父类CCLayer
CCLayer::init(); //得到窗体的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //设置坐标
CCPoint ptCenter = ccp(winSize.width / 2, winSize.height / 2); //创建一个批处理结点容器
CCSpriteBatchNode* batch = CCSpriteBatchNode::create("CloseNormal.png"); //将精灵加到层中
addChild(batch); //使用纹理创建精灵
CCSprite* sprite = CCSprite::createWithTexture(batch->getTexture()); //将精灵加到容器上
batch->addChild(sprite); //设置精灵的位置
sprite->setPosition(ptCenter); //设置触摸
setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne); return true;
} //响应触摸
bool Sprite::ccTouchBegan(CCTouch* touch, CCEvent*)
{
//得到窗体的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //循环100次,创建1000个精灵
for (int i = 0; i < 1000; i++)
{
//创建精灵
CCSprite* sprite = CCSprite::create("CloseNormal.png"); //将精灵加入到层上
addChild(sprite); //设置精灵的位置
sprite->setPosition(ccp(CCRANDOM_0_1()*winSize.width, CCRANDOM_0_1()* winSize.height));
} return true;
}
运行结果:
1、打开程序后的效果:启动程序后帧率为58.7
2、单击3次鼠标后的效果:单击三次鼠标后实现了批处理精灵帧率降低
使用纹理实现批处理精灵
在Sprite.h中加入以下的代码
#ifndef __Sprite_SCENE_H__
#define __Sprite_SCENE_H__ #include "cocos2d.h"
USING_NS_CC; class Sprite : public CCLayer
{
public: //初始化层
bool init(); //创建场景
static CCScene* scene(); //响应触摸
bool Sprite::ccTouchBegan(CCTouch* touch, CCEvent*); CCSpriteBatchNode* _batch; //用于创建:场景、菜单、层等东西
CREATE_FUNC(Sprite);
}; #endif // __Sprite_SCENE_H__
Sprite.cpp中的代码
#include "Sprite.h" USING_NS_CC; //创建场景
CCScene* Sprite::scene()
{
//创建场景
CCScene *scene = CCScene::create(); //创建层
Sprite *layer = Sprite::create(); //将层加到场景上
scene->addChild(layer); //返回场景
return scene;
} //初始化实例句柄
bool Sprite::init()
{
//初始化父类CCLayer
CCLayer::init(); //得到窗体的尺寸
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); //设置坐标
CCPoint ptCenter = ccp(winSize.width / 2, winSize.height / 2); //批处理精灵
CCSpriteBatchNode* batch = CCSpriteBatchNode::create("CloseNormal.png");
addChild(batch); _batch = batch; CCSprite* sprite = CCSprite::createWithTexture(batch->getTexture()); batch->addChild(sprite); sprite->setPosition(ptCenter); setTouchEnabled(true);
setTouchMode(kCCTouchesOneByOne); return true;
} //响应触摸
bool Sprite::ccTouchBegan(CCTouch* touch, CCEvent*)
{
CCSize winSize = CCDirector::sharedDirector()->getWinSize(); for (int i = 0; i < 1000; i++)
{
CCSprite* sprite = CCSprite::createWithTexture(_batch->getTexture()); _batch->addChild(sprite); sprite->setPosition(ccp(CCRANDOM_0_1()*winSize.width, CCRANDOM_0_1()* winSize.height));
} return true;
}
运行结果:
1、打开程序后的效果:启动程序后帧率为58.7
2、单击多次后的效果,帧率没有明显变化
说明:CCSpriteBatchNode也是一个容器,可是它仅仅能包容CCSprite对象,并且要求这些精灵来自同一个纹理
Cocos2d-X中实现批处理精灵的更多相关文章
- 如何在Cocos2D 1.0 中掩饰一个精灵(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原帖来自Ray Wunderlich写的精彩的文章 How To ...
- 如何在cocos2d项目中enable ARC
如何在cocos2d项目中enable ARC 基本思想就是不支持ARC的代码用和支持ARC的分开,通过xcode中设置编译选项,让支持和不支持ARC的代码共存. cocos2d是ios app开发中 ...
- 如何在Cocos2D游戏中实现A*寻路算法(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- 如何在Cocos2D游戏中实现A*寻路算法(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰一个精灵:实现代码 打开HelloWorldLayer.m并 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(五)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰和CCRenderTexture CCRenderTextu ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(四)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了完成需要的效果,我们将使用如下策略: 我们将首先绘制掩饰精灵 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 让我们开始吧 打开Xcode,从New Project中选择co ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(三)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 尝试编译运行,在你每一次点击屏幕的时候,你将看到我可爱的妻子制作 ...
随机推荐
- sharepoint 2013 userprofile 用户信息
Sharepoint2013获得当前用户userfrofile 基本介绍: 什么使用户配置文件. 用户属性和用户配置文件属性提供有关 SharePoint 用户的信息,如显示名称.电子邮件.标题以及其 ...
- Windows Phone开发(48):不可或缺的本地数据库
原文:Windows Phone开发(48):不可或缺的本地数据库 也许WP7的时候,是想着让云服务露两手,故似乎并不支持本地数据库,所有数据都上传上"云"数据库中.不过呢,在SD ...
- 雷人的一幕:国外的codeproject论坛竟有人发“中文贴”.....
潜水近一年,头一次见国人在此发“中文贴”,截图留个“纪念”....
- poj1364(差分约束系统)
poj1364 设s[i] 表示a1 + a2 + ... + a(i-1)的和 给我们n个点,m条约束 如果是a b gt c 那么表示 s[a+b+1] - s[a] > c ...
- 从零開始学android<RelativeLayout相对布局.十六.>
相对布局管理器指的是參考某一其它控件进行摆放,能够通过控制,将组件摆放在一个指定參考组件的上.下.左.右等位置,这些能够直接通过各个组件提供的属性完毕. 以下介绍一下各个方法的基本使用 No. 属性名 ...
- 第三届蓝桥杯C++本科B组决赛解题报告(更新中)
<1>星期几 9 package JiaNan; import java.util.Calendar; import java.util.GregorianCalendar; public ...
- Word001
C# Word 类库 2009-08-06 22:10 13470人阅读 评论(10) 收藏 举报 c#objectstring文档microsoftexcel using System;using ...
- HDU 2063 过山车 二分图题解
一个男女搭配的关系图,看能够凑成多少对,基本和最原始的一个二分图谜题一样了,就是 一个岛上能够凑成多少对夫妻的问题. 所以是典型的二分图问题. 使用匈牙利算法,写成两个函数,就很清晰了. 本程序还带分 ...
- hdu2993坡dp+二进制搜索
MAX Average Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- OCP解决问题053-16 MEMORY_TARGET
16.Setting which of the following initialization parameters enables Automatic Memory Management? A. ...