CSplashScene类
#ifndef __TRANSITIONSCENE_H__
#define __TRANSITIONSCENE_H__ #include "GameFrameHead.h" class CGameScene; class GAMEFRAME_API CSplashScene : public CCScene
{
public:
enum TargetScenes
{
TargetSceneINVALID = ,
TargetSceneFirstScene = ,
TargetSceneOtherScene = ,
TargetSceneMAX = ,
};
public:
CSplashScene();
virtual ~CSplashScene(); static CSplashScene* create(CGameScene* pScene);
bool init();
bool init(CGameScene* pScene); void retainPrevResource();
protected:
virtual void onEnter();
virtual void onEnterTransitionDidFinish();
void loadingCallBack(CCObject *obj); void onDelayLoading();
void replaceScene(); virtual void loadingPercent();
float getPercent();
private:
//virtual void update(float dt); private:
static CSplashScene* g_pSplashScene; CGameScene* m_pCurScene;
int m_nCurTag;
CGameScene* m_pNextScene; int m_nNumberOfSprites;
int m_nNumberOfLoadedSprites; float m_fPercent; CCLabelTTF* m_pLabelLoading; bool m_bRetainResource; }; #endif //__TRANSITIONSCENE_H__
#include "SplashScene.h"
#include "Config.h"
#include "XSprite.h"
#include "GameScene.h" CSplashScene* CSplashScene::g_pSplashScene = NULL; CSplashScene::CSplashScene()
{
m_pCurScene = NULL;
m_pNextScene = NULL;
m_nNumberOfSprites = ;
m_nNumberOfLoadedSprites = ;
m_fPercent = ;
m_bRetainResource = false;
} CSplashScene::~CSplashScene()
{
CCLog("CSplashScene::~CSplashScene");
} CSplashScene* CSplashScene::create(CGameScene* pScene )
{ CSplashScene* pSplashScene = new CSplashScene();
if (pSplashScene && pSplashScene->init(pScene))
{
pSplashScene->autorelease();
return pSplashScene;
} CCLog("error: CTransitScene::create");
SAFE_DELETE(pSplashScene);
return NULL; } bool CSplashScene::init( CGameScene* pScene )
{
m_pCurScene =(CGameScene*) CCDirector::sharedDirector()->getRunningScene();
if (m_pCurScene)
{
m_nCurTag = m_pCurScene->getSceneTag();
} m_pNextScene = pScene; return true;
} void CSplashScene::onEnter()
{
CCScene::onEnter(); } void CSplashScene::loadingCallBack( CCObject *obj )
{
++m_nNumberOfLoadedSprites;//每调用一次就+1
m_fPercent = (float) m_nNumberOfLoadedSprites / (float)m_nNumberOfSprites;
this->loadingPercent(); //全部加载完成后,就执行
if (m_nNumberOfLoadedSprites == m_nNumberOfSprites)
{
//加载完 延迟一下切换场景
CCDelayTime* pActDelay = CCDelayTime::create(0.5f);
CCFiniteTimeAction* pAction = CCSequence::create(pActDelay,
CCCallFunc::create(this, callfunc_selector(CSplashScene::replaceScene)),
NULL);
this->runAction(pAction);
} } void CSplashScene::onEnterTransitionDidFinish()
{
CCScene::onEnterTransitionDidFinish(); if (!m_bRetainResource)
{
//CCTextureCache::sharedTextureCache()->removeAllTextures();
//释放当前一个场景
if (CConfig::getInstance()->getElementInfoByItem(m_nCurTag))
{
vector<PlistInfo>& vecCurPlist = *(CConfig::getInstance()->getElementInfoByItem(m_nCurTag));
for (vector<PlistInfo>::iterator it = vecCurPlist.begin(); it != vecCurPlist.end(); it++)
{
CCSpriteFrameCache::sharedSpriteFrameCache()->removeSpriteFramesFromFile(it->strPlist.c_str());
}
}
} CCDelayTime *delayAction = CCDelayTime::create(0.2f);
CCCallFunc *callSelectorAction = CCCallFunc::create(this,callfunc_selector(CSplashScene::onDelayLoading));
this->runAction(CCSequence::create(delayAction, callSelectorAction,NULL)); } void CSplashScene::onDelayLoading()
{
//加载下一个场景
//初始化元素 把plist形式的图片资源加载到内存
vector<PlistInfo>& vecNextPlist = *(CConfig::getInstance()->getElementInfoByItem(m_pNextScene->getSceneTag()));
m_nNumberOfSprites = vecNextPlist.size();
for (vector<PlistInfo>::iterator it = vecNextPlist.begin(); it != vecNextPlist.end(); it++)
{
//加载图片到内存
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(it->strPlist.c_str(),it->strImage.c_str());
} CCDelayTime *delayAction = CCDelayTime::create(0.2f);
CCCallFunc *callSelectorAction = CCCallFunc::create(this,callfunc_selector(CSplashScene::replaceScene));
this->runAction(CCSequence::create(delayAction, callSelectorAction,NULL));
} void CSplashScene::replaceScene()
{
CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.2f, (CCScene*)m_pNextScene));
} void CSplashScene::loadingPercent()
{ } float CSplashScene::getPercent()
{
return m_fPercent;
} void CSplashScene::retainPrevResource()
{
m_bRetainResource = true;
}
CSplashScene类的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
随机推荐
- [Linux] git send-email的使用
1. git send-email is included in an individual package, named "git-email":$ sudo apt-get i ...
- 一个table插件,用于bootstrap开发
最近项目中改用bootstrap,可以给的通用table,写的有点死,id名称是固定的,那一个页面两个table如何做呢? ok,模仿着别人的代码,写了一个,整体代码如下: ; (function(f ...
- TensorFlow进阶(六)---模型保存与恢复、自定义命令行参数
模型保存与恢复.自定义命令行参数. 在我们训练或者测试过程中,总会遇到需要保存训练完成的模型,然后从中恢复继续我们的测试或者其它使用.模型的保存和恢复也是通过tf.train.Saver类去实现,它主 ...
- servlet中获得tomcat项目根目录的绝对路径
public class CreateXmlAction extends HttpServlet { private ServletConfig config; public void init(Se ...
- c# 注册表操作,创建,删除,修改,判断节点是否存在
用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和 删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1:要操作注册表,我们必须 ...
- Echarts的legend改变图例图标为自定义图片
当折线图时,legend默认时rect形式,如果需要改图例形状,可以自己设置legend的icon属性 legend: { icon:'stack' }, 1.自定义每个图例样式:为data的每个对象 ...
- 全民Scheme(2):来自星星的你
一门编程语言,假设不能对你思考编程的方式产生影响.就不值得去学习.-- Alan Perlis (define rember* (lambda (a list) (cond ...
- Linux使用sar进行性能分析
转:https://blog.csdn.net/xusensen/article/details/54606401#sar%E7%AE%80%E4%BB%8B Linux使用sar进行性能分析 Lin ...
- 每日一Vim(1)
来自 上一篇讲过了Vim的基本操作命令(打开,编辑,保存退出)以及Vim的三种基本模式和光标的基本导航(hjkl),今天讲一些稍微高级点的光标移动,以及一些基本的文本操作命令. 翻一页/半页 对于一个 ...
- ZooKeeper安装方法具体解释
ZooKeeper安装方式分为两种,一种为单机模式.一个为集群模式,集群模式须要事先正确配置hadoop集群,安装方法參考hadoop-1.2.1安装方法具体解释 单机模式安装: 1.上传并解压zoo ...