【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十课:Cocos2D-X场景切换1-3

【麦可网】Cocos2d-X跨平台游戏开发---学习笔记

第二十课:Cocos2D-X场景切换1-3

=======================================================================================================================================================================

课程目标:

 - Cocos2D-X场景切换

课程重点:

 - Cocos2D-X场景堆栈

 - Cocos2D-X切换方式

考核目标:

 - 理解Cocos2D-X场景堆栈

 - 使用Cocos2D-X场景切换特效

=======================================================================================================================================================================

一、用图层切换画面

void MenuLayerMainMenu::menuCallback2(CCObject* sender)
{
    ((CCLayerMultiplex*)m_pParent)->switchTo(2);
}
其中:
void CCLayerMultiplex::switchTo(unsigned int n)
{
    CCAssert( n < m_pLayers->count(), "Invalid index in MultiplexLayer switchTo message" );

//删除图层
    this->removeChild((CCNode*)m_pLayers->objectAtIndex(m_nEnabledLayer), true);

    m_nEnabledLayer = n;

//添加图层
    this->addChild((CCNode*)m_pLayers->objectAtIndex(n));
}


二、用场景切换画面

场景一:
bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

	CCMenuItemLabel* cocos2dItem = CCMenuItemLabel::create( CCLabelTTF::create("Scence1","Arial",20), this, menu_selector(HelloWorld::menuCloseCallback) );
    cocos2dItem->setPosition(ccp(200,200));
	CCMenu* menu = CCMenu::createWithItem(cocos2dItem);
	menu->setPosition(CCPointZero);
	this->addChild(menu);

    return true;
}


void HelloWorld::menuCloseCallback(CCObject* pSender)
{
	CCScene* scence2 = SCENE2::scene();
	CCDirector::sharedDirector()->replaceScene(scence2);
}

------------------------------------------------------------------------
场景二:
bool SCENE2::init()
{
	//
	// 1. super init first
	if ( !CCLayer::init() )
	{
		return false;
	}

	CCMenuItemLabel* cocos2dItem = CCMenuItemLabel::create( CCLabelTTF::create("Scence2","Arial",20), this, menu_selector(SCENE2::menuCloseCallback) );
	cocos2dItem->setPosition(ccp(200,200));
	CCMenu* menu = CCMenu::createWithItem(cocos2dItem);
	menu->setPosition(CCPointZero);
	this->addChild(menu);
	
	return true;
}


void SCENE2::menuCloseCallback(CCObject* pSender)
{
	CCScene* scence1 = HelloWorld::scene();
	CCDirector::sharedDirector()->replaceScene(scence1);
}

ps:如果在包含头文件的时候出现:无法打开源文件。则表示头文件的位置放置不正确,应放在Class目录下。

切换场景的几个接口:
void CCDirector::replaceScene(CCScene *pScene)
{
    CCAssert(m_pRunningScene, "Use runWithScene: instead to start the director");
    CCAssert(pScene != NULL, "the scene should not be null");

    unsigned int index = m_pobScenesStack->count();

    m_bSendCleanupToScene = true;
    m_pobScenesStack->replaceObjectAtIndex(index - 1, pScene);

    m_pNextScene = pScene;
}

---------------------------------------------------------
void CCDirector::pushScene(CCScene *pScene)
{
    CCAssert(pScene, "the scene should not null");

    m_bSendCleanupToScene = false;

    m_pobScenesStack->addObject(pScene);
    m_pNextScene = pScene;
}

---------------------------------------------------------
void CCDirector::popScene(void)
{
    CCAssert(m_pRunningScene != NULL, "running scene should not null");

    m_pobScenesStack->removeLastObject();
    unsigned int c = m_pobScenesStack->count();

    if (c == 0)
    {
        end();
    }
    else
    {
        m_bSendCleanupToScene = true;
        m_pNextScene = (CCScene*)m_pobScenesStack->objectAtIndex(c - 1);
    }
}

---------------------------------------------------------
void CCDirector::popToRootScene(void)
{
    popToSceneStackLevel(1);
}

给切换的场景添加动画:
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
	CCScene* scence2 = SCENE2::scene();
	CCScene* tra_scence2 = CCTransitionSlideInB::create(2.0, scence2);
	CCDirector::sharedDirector()->replaceScene(tra_scence2);
}

---------------------------------------------------------------
void SCENE2::menuCloseCallback(CCObject* pSender)
{
	CCScene* scence1 = HelloWorld::scene();
	CCScene* tra_scence1 = CCTransitionMoveInL::create(2.0f, scence1);
	CCDirector::sharedDirector()->replaceScene(tra_scence1);
}

===================================================================

总结:

好的切换场景动画,能够提高用户体验。

 

开心一刻:

何四与邻居发生争执,何四便粗鲁地骂对方:“你是猪!”此事被居民小区治安员知道了,于是要罚何四30元款。 

何四接过罚单,很不服气:“上个月我也是骂他是猪,你只罚了我20元嘛。” 

“很抱歉,”治安员苦笑一声,“近段猪肉涨价了。”

 

 

【麦可网】Cocos2d-X跨平台游戏开发---教程下载:http://pan.baidu.com/s/1kTio1Av

【麦可网】Cocos2d-X跨平台游戏开发---笔记系列:http://blog.csdn.net/qiulanzhu



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程 序 文 件 文件编号:MQL—QP-2019 文件版本:第2版 受控状态: 受 控 号: 持 有 人: 陕西麦可罗生物科技有限公司实验室发布 2019年12月01日 批准令 根据第1版《质量手册》的要求,为确保管理体系各质量管理和技术运作过程质量,质 量主管组织管理人员和技术人员编制了本《程序文件》。 本《程序文件》中各程序文件规定了管理体系各项重要质量活动和技术活动的工作程序 要求,是《质量手册》的支持性文件,全体员工须严格按照其中各个程序的要求开展工作 。经审批,于2019年12月01日发布实施。 全体人员要认真学习本文件,及时领会、掌握文件的核心要求,真正落实到自己的实 际工作中,实现本实验室工作质量、管理水平的不断提高。 编制: 日期: 批准: 日期: 修订页 "序号 "修改章节 "修改内容摘要 "修改日期"修改人 "批准人 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 目录 批准令 2 修订页 3 目录 4 MQL—QP—40101:2019《保证公正性与诚信度程序》 6 MQL—QP—40102:2019《保密工作程序》 8 MQL—QP—60201:2019《检测人员监督程序》 10 MQL—QP—60202:2019《人员培训管理程序》 14 MQL—QP—60301:2019《设施和环境条件控制程序》 19 MQL—QP—60302:2019《安全作业管理程序》 22 MQL—QP—60303:2019《环境保护程序》 25 MQL—QP—60401:2019《设备管理程序》 27 MQL—QP—60402:2019《期间核查程序》 32 MQL—QP—60403:2019《标准物质管理程序》 34 MQL—QP—60404:2019《标准溶液管理程序》 37 MQL—QP—60501:2019《量值溯源程序》 40 MQL—QP—60601:2019《服务和供应品采购程序》 44 MQL—QP—71001:2019《合同评审程序》 48 MQL—QP—70701:2019《检测工作控制程序》 51 MQL—QP—70202:2019《检测方法的验证程序》 54 MQL—QP—70203:2019《检测方法的开发与确认程序》 56 MQL—QP—70702:2019《方法偏离控制程序》 59 MQL—QP—70301:2019《抽样管理程序》 61 MQL—QP—70401:2019《样品管理程序》 64 MQL—QP—70501:2019《数据保护程序》 67 MQL—QP—70601:2019《测量不确定度评定程序》 70 MQL—QP—70701:2019《检测结果有效性控制程序》 73 MQL—QP—70702:2019《能力验证程序》 77 MQL—QP—70801:2019《检测报告管理程序》 79 MQL—QP—70901:2019《投诉处理程序》 84 MQL—QP—71001:2019《不符合工作控制程序》 86 MQL—QP—71101:2019《数据控制和信息管理程序》 88 MQL—QP—80301:2019《文件控制程序》 89 MQL—QP—80401:2019《记录控制程序》 94 MQL—QP—80501:2019《风险和机遇应对程序》 98 MQL—QP—80701:2019《纠正措施控制程序》 99 MQL—QP—80801:2019《内部审核程序》 101 MQL—QP—80901:2019《管理评审程序》 105 "陕西麦可罗生物科技有限公司实验室 "文件编号:MQL—QP—40101:2019 " "程序文件 " " " "文件版本:第2版 第0次修订 " "标题:保证公正性与诚信度程序 "发布实施:2019年12月01日 " " "页码范围:第1页,共2页 " MQL—QP—40101:2019《保证公正性与诚信度程序》 1 目的 为保证检测工作的公正性,避免卷入任何可能降低技术能力、公正性、判断力或工作 诚实性的可信程度的活动,特编制本程序。 2 范围 检测工作流程的各个环节中客观公正性和诚信度的保持工作。 3 职责 3.1实验室主任:制定公正性措施,审批违反公正性事件的处理意见

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值