Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景

工厂方法一般写法

StartLayer * StartLayer::create()

{

StartLayer *sl = new StartLayer();

sl->init();

sl->autorelease();

return sl;

}

也能够用CC的CCPlatformMacros.h文件中提供的宏 CREATE_FUNC 来替代上面一段代码

#define CREATE_FUNC(__TYPE__) \

static __TYPE__* create() \

{ \

__TYPE__ *pRet = new __TYPE__(); \

if (pRet && pRet->init()) \

{ \

pRet->autorelease(); \

return pRet; \

} \

else \

{ \

delete pRet; \

pRet = NULL; \

return NULL; \

} \

}

----------------------------------------------------从StartLayer  到
LoadingLayer---------------------------------------------------------

StartLayer.h

#pragma once

#include "cocos2d.h"

using namespace cocos2d;

class StartLayer : public CCLayer

{

public:

StartLayer();

virtual ~StartLayer();

bool init();

static StartLayer * create();

static CCScene * scene();

private:

void clickSigle(CCObject *sender);

};

StartLayer.cpp

#include "StartLayer.h"

#include "LoadingLayer.h"

StartLayer::StartLayer(void)

{

}

StartLayer::~StartLayer(void)

{

}

bool StartLayer::init()

{

if(!CCLayer::init())

{

return false;

}

//開始界面背景图片

CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

CCSprite *bgSprite = CCSprite::create("BackGround.png");

bgSprite->setPosition(CCPoint(screenSize.width/2,screenSize.height/2));

this->addChild(bgSprite);

//button的使用

CCMenuItemImage *singleItem = CCMenuItemImage::create("btn1.png","btn2.png",this,menu_selector(StartLayer::clickSigle));

singleItem->setPosition(CCPointMake(80,-80));

CCMenu *menu = CCMenu::create(singleItem,NULL);

addChild(menu);

return true;

}

void StartLayer::clickSigle(CCObject *sender)

{

CCLOG("click sigle");

//跳转到loadingLayer界面

//用2s 动画来切换界面

CCScene *s = LoadingLayer::scene();

CCTransitionSplitRows *trans = CCTransitionSplitRows::create(2,s);

CCDirector::sharedDirector()->replaceScene(trans);

}

StartLayer * StartLayer::create()

{

StartLayer *sl = new StartLayer();

sl->init();

sl->autorelease();

return sl;

}

CCScene * StartLayer::scene()

{

StartLayer *sl = StartLayer::create();

CCScene *s = CCScene::create();

s->addChild(sl);

return s;

}

------------------------------------------------------------------------------------------

LoadingLayer.h

#pragma once

#include "cocos2d.h"

USING_NS_CC;

class LoadingLayer : public CCLayer

{

public:

int count;

LoadingLayer(void);

~LoadingLayer(void);

bool init();

static LoadingLayer * create();

static CCScene * scene();

//生命周期

virtual void onEnter();

virtual void onExit();

virtual void onEnterTransitionDidFinish();

private:

void timeUpdate(float dt);

};

LoadingLayer.cpp

#include "LoadingLayer.h"

LoadingLayer::LoadingLayer(void)

{

}

LoadingLayer::~LoadingLayer(void)

{

}

bool LoadingLayer::init()

{

if(!CCLayer::init())

{

return false;

}

//载入载入界面背景图片

CCSprite *bgSprite = CCSprite::create("loading.png");

CCSize screenSize = CCDirector::sharedDirector()->getWinSize();

bgSprite->setPosition(ccp(screenSize.width/2,screenSize.height/2));

this->addChild(bgSprite);

//label的使用

CCLabelTTF* label = CCLabelTTF::create("loading","Arial",25);

label->setPosition(ccp(100,150));

label->setAnchorPoint(ccp(0,0.5));

label->setTag(100);

addChild(label);

count = 1;

return true;

}

void LoadingLayer::timeUpdate(float dt)

{

//拼接字符串

CCLabelTTF *label = (CCLabelTTF*)getChildByTag(100);

const char * str = label->getString();

char newstr[128];

if(++count > 5)

{

//停止定时器

unschedule(schedule_selector(LoadingLayer::timeUpdate));

}

sprintf(newstr,"%s.",str);

label->setString(newstr);

}

LoadingLayer* LoadingLayer::create()

{

LoadingLayer* layer = new LoadingLayer();

layer->init();

layer->autorelease();

return layer;

}

CCScene* LoadingLayer::scene()

{

LoadingLayer* layer = LoadingLayer::create();

CCScene * s = CCScene::create();

s->addChild(layer);

return s;

}

void LoadingLayer::onEnter()

{

CCLayer::onEnter();

}

void LoadingLayer::onExit()

{

CCLayer::onExit();

}

void LoadingLayer::onEnterTransitionDidFinish()

{

CCLayer::onEnterTransitionDidFinish();

//系统有一个轻量的定时器,每隔0.5s会调用this,timeUpdate方法

this->schedule(schedule_selector(LoadingLayer::timeUpdate),0.5f);

}

时间: 2024-10-09 02:24:25

Cocos2D-X学习笔记 3 从一个场景切换到还有一个场景的相关文章

quick-cocos2d-x学习笔记【2】——项目结构分析、创建新场景

创建完一个新项目之后,我们可以简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*文件夹就不用说了,是对应的平台的解决方案,res专门存放我们的游戏资源,scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类,我们主要常用的就两个文件夹,res和scripts(我这不是废话吗) 好吧,还是再打开scripts文件夹看下, 该文件下有main.lua,它是程序lua脚本的启动文件 function __G__TRACKBACK__(errorM

Android学习笔记(十二)——实战:制作一个聊天界面

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 运用简单的布局知识,我们可以来尝试制作一个聊天界面. 一.制作 Nine-Patch 图片 : Nine-Patch图片是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而哪些区域不可以.一般用来作为聊天信息的背景.在此我们先准备一张png图片.然后在 Android sdk 目录下有一个 tools 文件夹,在这个文件夹中找到 draw9patch.bat文件. 双击打开之后, 在导航栏点击 File→

8 cocos2dx添加场景切换效果,控制场景切换彻底完成之后再执行动画

 1 添加场景切换效果 供场景切换的类: CCTransitionJumpZoom CCTransitionProgressRadialCCW CCTransitionProgressRadialCW CCTransitionProgressHorizontal CCTransitionProgressVertical CCTransitionProgressInOut CCTransitionProgressOutIn CCTransitionCrossFade CCTransitionF

8 cocos2dx加入场景切换效果,控制场景切换彻底完毕之后再运行动画

 1 加入场景切换效果 供场景切换的类: CCTransitionJumpZoom CCTransitionProgressRadialCCW CCTransitionProgressRadialCW CCTransitionProgressHorizontal CCTransitionProgressVertical CCTransitionProgressInOut CCTransitionProgressOutIn CCTransitionCrossFade CCTransitionF

OpenCV学习笔记(一)安装及运行第一个OpenCV程序

1.下载及安装 OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ .在 http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包.OpenCV的Windows平台安装包是放在SourceForge.net网站. 我下了2.4.4版,大概217M.安装包其实就是一个压缩包,安装过程就是解压到某个文件夹.我是安装到 E:\Soft\opencv 目录,安装后文件夹如下: 我们只需要关注“build”文

Stage3D学习笔记(三):使用GPU绘制一个图片

首先准备我们需要的图片,尺寸必须是2的幂数,我修改了一下Starling的图标拿来用: 还是先看看最终效果: 代码是居于上一节的代码进行修改的: 1 package 2 { 3 import com.adobe.utils.AGALMiniAssembler; 4 5 import flash.display.Bitmap; 6 7 import flash.display.Sprite; 8 import flash.display.Stage3D; 9 import flash.displa

java学习笔记-尚硅谷0918班任*:从一个无所事事,生活极其没有规律的待业青年

一个月的时间过去了,在这一个月的时间里,我从一个无所事事,生活极其没有规律的待业青年,变成了一个对前途充满希望,努力去争取的五好青年.生活规律,有节奏:学习肯发力,肯努力.这些都跟我做决定来到尚硅谷java培训有这密不可分的关系.当然重点还是要感谢尚硅谷的各位老师的指点和栽培.我对于我现在的状态很满意,对于我的未来抱有很美好的希冀.    一.学习方面: 一个月的时间,JAVASE基础部分已经讲完了.从刚开始的仅仅局限于了解到现在的能够大致的掌握,我感觉我的进步还是蛮大.在教室里能跟上老师的节奏

Stage3D学习笔记(二):使用GPU绘制一个三角形

我们需要使用到Adobe自家提供的AGALMiniAssembler代码类,可以在网下进行下载: 关于AGAL的入门知识可以参考下面的文章: AGAL介绍系列文章(第一部分)AGAL介绍系列文章(第二部分)AGAL介绍系列文章(第三部分) 最终效果如下: 直接上代码了,亲们请查看相关的注释说明: 1 package 2 { 3 import com.adobe.utils.AGALMiniAssembler; 4 5 import flash.display.Sprite; 6 import f

#[Composer学习笔记]Part1:安装composer并通过composer创建一个项目

安装composer 这里分享的是linux下的composer安装: 首先,创建一个目录放置composer,并进入目录: mkdir /opt/composer cd /opt/composer 下载composer,下载成功后注册composer.phar为全局命令 curl -sS https://getcomposer.org/installer | /opt/php/bin/php ln -s /opt/composer/composer.phar /bin/composer.pha