哇!板球 源代码分析一

游戏主菜单页面

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();
}
时间: 2024-10-12 13:40:41

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

Java中arraylist和linkedlist源代码分析与性能比較

Java中arraylist和linkedlist源代码分析与性能比較 1,简单介绍 在java开发中比較经常使用的数据结构是arraylist和linkedlist,本文主要从源代码角度分析arraylist和linkedlist的性能. 2,arraylist源代码分析 Arraylist底层的数据结构是一个对象数组.有一个size的成员变量标记数组中元素的个数,例如以下图: * The array buffer into which the elements of the ArrayLis

转:RTMPDump源代码分析

0: 主要函数调用分析 rtmpdump 是一个用来处理 RTMP 流媒体的开源工具包,支持 rtmp://, rtmpt://, rtmpe://, rtmpte://, and rtmps://.也提供 Android 版本. 最近研究了一下它内部函数调用的关系. 下面列出几个主要的函数的调用关系. RTMPDump用于下载RTMP流媒体的函数Download: 用于建立网络连接(NetConnect)的函数Connect: 用于建立网络流(NetStream)的函数 rtmpdump源代码

Kafka SocketServer源代码分析

Kafka SocketServer源代码分析 标签: kafka 本文将详细分析Kafka SocketServer的相关源码. 总体设计 Kafka SocketServer是基于Java NIO来开发的,采用了Reactor的模式,其中包含了1个Acceptor负责接受客户端请求,N个Processor负责读写数据,M个Handler来处理业务逻辑.在Acceptor和Processor,Processor和Handler之间都有队列来缓冲请求. kafka.network.Accepto

pomelo源代码分析(一)

千里之行始于足下,一直说想了解pomelo,对pomelo有兴趣,但一直迟迟没有去碰,尽管对pomelo进行源代码分析,在网络上肯定不止我一个,已经有非常优秀的前辈走在前面,如http://golanger.cn/,在阅读Pomelo代码的时候,已经连载到了11篇了,在我的源代码分析參考了该博客,当然,也会添?我对pomelo的理解,借此希望能提高一下自己对node.js的了解和学习一些优秀的设计. 开发环境:win7 调试环境:webstorm5.0 node.js版本号:v0.8.21 源代

Jafka源代码分析——随笔

Kafka是一个分布式的消息中间件,可以粗略的将其划分为三部分:Producer.Broker和Consumer.其中,Producer负责产生消息并负责将消息发送给Kafka:Broker可以简单的理解为Kafka集群中的每一台机器,其负责完成消息队列的主要功能(接收消息.消息的持久化存储.为Consumer提供消息.消息清理.....):Consumer从Broker获取消息并进行后续的操作.每个broker会有一个ID标识,该标识由人工在配置文件中配置. Kafka中的消息隶属于topic

ftp server源代码分析20140602

当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,android的sdk中为我们提供了ProGrard这个工具,可以对代码进行混淆(一般是用无意义的名字来重命名),以及去除没有使用到的代码,对程序进行优化和压缩,这样可以增加你想的难度.最近我做的项目,是我去配置的混淆配置,因此研究了一下,这里分享一下. 如何启用ProGuard ant项目和eclipse

Spark SQL之External DataSource外部数据源(二)源代码分析

上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External DataSource使用篇地址:Spark SQL之External DataSource外部数据源(一)演示样例 http://blog.csdn.net/oopsoom/article/details/42061077) 一.Sources包核心 Spark SQL在Spark1.2中提供了Exte

【转载】linux环境下tcpdump源代码分析

linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02   原文链接   主题 Tcpdump 作者:韩大卫 @ 吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分核心代码. Tcpdump 的使用目的就是打印出指定条件的报文,即使有再多的正则表达式作为过滤条件.所以只要懂得tcpdump -nXXi eth0 的实现原理即可. 进入main之前,先看一些头文件 n

Android万能适配器base-adapter-helper的源代码分析

项目地址:https://github.com/JoanZapata/base-adapter-helper 1. 功能介绍 1.1. base-adapter-helper base-adapter-helper 是对传统的 BaseAdapter ViewHolder 模式的一个封装.主要功能就是简化我们书写 AbsListView 的 Adapter 的代码,如 ListView,GridView. 1.2 基本使用 mListView.setAdapter(mAdapter = new