哇!板球 源码分析一

游戏主菜单页面

BeginLayer类封装该页面,init函数初始化该页面布景

该页面背景

    isDialog = false;
    setKeypadEnabled(true);    //开启按键事件
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();    //获取可见区域原点坐标
	CCSprite* bSprite = CCSprite::create("pic/background.png");//背景图片
	bSprite->setPosition(ccp(origin.x, origin.y));
	bSprite->setAnchorPoint(ccp(0, 0));//默认锚点为0.5,0.5
	this->addChild(bSprite, 0);

创建菜单项按键

主菜单键及回调

   	 CCMenuItemImage *continueItem = CCMenuItemImage::create
	 (
		  "menuContinue.png",     //平时的图片
		  "menuContinue2.png",   //选中时的图片
		  this,
		  menu_selector(BeginLayer::continueSence)//点击时执行的回调方法
	 );

继续键及回调

	 CCMenuItemImage *continueItem = CCMenuItemImage::create
	 (
		  "menuContinue.png",     //平时的图片
		  "menuContinue2.png",   //选中时的图片
		  this,
		  menu_selector(BeginLayer::continueSence)//点击时执行的回调方法
	 );

成就键及回调

	 CCMenuItemImage *achievementsItem = CCMenuItemImage::create
	 (
		  "menuAchievements.png",     //平时的图片
		  "menuAchievements2.png",   //选中时的图片
		  this,
		  menu_selector(BeginLayer::achievementsSence)//点击时执行的回调方法
	 );

关于键及回调

	 CCMenuItemImage *aboutItem = CCMenuItemImage::create
	 (
		  "menuAbout.png",     //平时的图片
		  "menuAbout2.png",   //选中时的图片
		  this,
		  menu_selector(BeginLayer::aboutSence)//点击时执行的回调方法
	 );

设置键及回调

	 CCMenuItemImage *settItem = CCMenuItemImage::create
	 (
		  "set.png",     //平时的图片
		  "set2.png",   //选中时的图片
		  this,
		  menu_selector(BeginLayer::setSence)//点击时执行的回调方法
	 );

创建标题

	CCSprite* tSprite = CCSprite::create("pic/title.png");
	//设置精灵对象的位置
	tSprite->setPosition(ccp(origin.x, origin.y+visibleSize.height-207));
	tSprite->setAnchorPoint(ccp(0, 0));
	this->addChild(tSprite, 3);

组合成菜单对象

		pMenu = CCMenu::create(continueItem,newMenuItem,achievementsItem,aboutItem,settItem,NULL);
		pMenu->setPosition(CCPointZero);
		this->addChild(pMenu, GAME_LEVEL_WYF);

为菜单项出场添加动画

		CCNode* child = NULL;
		CCArray * pArray = pMenu->getChildren();//获取所有菜单项
		int count = pArray->count();//个数
		for(int m=0;m<count;m++)//遍历菜单项
		{
			child = (CCNode*)(pArray->objectAtIndex(m));//每个菜单项
			child->setPosition(ccp(400,550));//初始位置
			CCActionInterval* moveTo1 = CCMoveTo::create(0.2f,ccp(400,-40));
			CCActionInterval* moveTo2 = CCMoveTo::create(0.25f*(count-m),ccp(400,80+80*(count-1-m)));
			CCActionInterval* move_ease_in2 = CCEaseElasticOut::create(moveTo2);//moveTo2振幅效果
			CCDelayTime *delay = CCDelayTime::create(0.2f*(count-m-1));//每个菜单项出场间歇时间
			CCSequence* seq = CCSequence::create(delay,moveTo1,move_ease_in2, NULL);//
			child->runAction(seq);//执行

		}

主菜单键回调,通过调用toNewGameLayer来切换到NewGameLayer场景,真正的游戏主页面

void BeginLayer::newSence(CCObject* pSender)
{
	tsm->toNewGameLayer(1);//第一关
}

继续键回调,先获取上次的数据,然后切换到相应关卡

void BeginLayer::continueSence(CCObject* pSender)
{
	//int gK=JNIUtil::getInt("continue",1,classPath.c_str());
	tsm->toNewGameLayer(1);
}

成就键回调,调用toAchieveLayer切换到AchieveLayer场景,来统计游戏数据中玩家最高分、最高关卡

void BeginLayer::achievementsSence(CCObject* pSender)
{
	tsm->toAchieveLayer();
}

关于键回调,调用toHelpLayer切换到HelpLayer场景,提示游戏帮助手册

void BeginLayer::aboutSence(CCObject* pSender)
{
	tsm->toHelpLayer();
}

设置键回调,调用toSetLayer切换到SetLayer场景,设置游戏音乐及音效

void BeginLayer::setSence(CCObject* pSender)
{
	tsm->toSetLayer();
}

返回键处理,调用toOutLayer切换到推出游戏场景

void BeginLayer::keyBackClicked()
{
	if(isDialog)
	{
		return;
	}
	isDialog = true;
	//暂停声音播放
	CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	tsm->toOutLayer();
}

哇!板球 源码分析一,布布扣,bubuko.com

时间: 2024-12-05 11:19:29

哇!板球 源码分析一的相关文章

哇!板球 源码分析二

游戏主页面布局 创建屏下Score标签 pLabel = CCLabelTTF::create("Score", "Arial", TITLE_FONT_SIZE); //分数标签 //设置标签字体的颜色 pLabel->setColor (ccc3(0, 0, 0)); //设置文本标签的位置 pLabel->setPosition ( ccp ( SCORE_X, //X坐标 SCORE_Y //Y坐标 ) ); //将文本标签添加到布景中 this

哇!板球 源码分析三

守门员出场 守门员出场,每个守门员是从屏幕的右侧中间的位置随机方向向左侧移动 FielderSprite* fielderSprite1 = FielderSprite::create("pic/fielder.png"); //守门员精灵初始位置为右侧中间位置 fielderSprite1->setPosition(ccp(GOALKEEPER_X, GOALKEEPER_Y)); fielderSprite1->setAnchorPoint(ccp(0.5, 0.5))

TeamTalk源码分析之login_server

login_server是TeamTalk的登录服务器,负责分配一个负载较小的MsgServer给客户端使用,按照新版TeamTalk完整部署教程来配置的话,login_server的服务端口就是8080,客户端登录服务器地址配置如下(这里是win版本客户端): 1.login_server启动流程 login_server的启动是从login_server.cpp中的main函数开始的,login_server.cpp所在工程路径为server\src\login_server.下表是logi

Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)

1 背景 还记得前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>中关于透过源码继续进阶实例验证模块中存在的点击Button却触发了LinearLayout的事件疑惑吗?当时说了,在那一篇咱们只讨论View的触摸事件派发机制,这个疑惑留在了这一篇解释,也就是ViewGroup的事件派发机制. PS:阅读本篇前建议先查看前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>,这一篇承接上一篇. 关于View与ViewGroup的区别在前一篇的A

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)【转】

原文地址:Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinaunix.net/uid-25909619-id-4938395.html 前面粗略分析start_kernel函数,此函数中基本上是对内存管理和各子系统的数据结构初始化.在内核初始化函数start_kernel执行到最后,就是调用rest_init函数,这个函数的主要使命就是创建并启动内核线

Spark的Master和Worker集群启动的源码分析

基于spark1.3.1的源码进行分析 spark master启动源码分析 1.在start-master.sh调用master的main方法,main方法调用 def main(argStrings: Array[String]) { SignalLogger.register(log) val conf = new SparkConf val args = new MasterArguments(argStrings, conf) val (actorSystem, _, _, _) =

Solr4.8.0源码分析(22)之 SolrCloud的Recovery策略(三)

Solr4.8.0源码分析(22)之 SolrCloud的Recovery策略(三) 本文是SolrCloud的Recovery策略系列的第三篇文章,前面两篇主要介绍了Recovery的总体流程,以及PeerSync策略.本文以及后续的文章将重点介绍Replication策略.Replication策略不但可以在SolrCloud中起到leader到replica的数据同步,也可以在用多个单独的Solr来实现主从同步.本文先介绍在SolrCloud的leader到replica的数据同步,下一篇

zg手册 之 python2.7.7源码分析(4)-- pyc字节码文件

什么是字节码 python解释器在执行python脚本文件时,对文件中的python源代码进行编译,编译的结果就是byte code(字节码) python虚拟机执行编译好的字节码,完成程序的运行 python会为导入的模块创建字节码文件 字节码文件的创建过程 当a.py依赖b.py时,如在a.py中import b python先检查是否有b.pyc文件(字节码文件),如果有,并且修改时间比b.py晚,就直接调用b.pyc 否则编译b.py生成b.pyc,然后加载新生成的字节码文件 字节码对象