CCTouch类是每个点击事件处理过程中,都需要使用的类,
因为android的屏幕坐标和OpenGL的坐标的不同,而且在屏幕
适配时,有缩放,所以需要把屏幕坐标转化为OpenGL的坐标坐标。
class CC_DLL CCTouch : public CCObject
{
public:
/**
* @js ctor
*/
CCTouch()
<pre name="code" class="cpp">1、java端 Cocos2dxGLSurfaceView类
@Override
public boolean onTouchEvent(final MotionEvent pMotionEvent) {
// these data are used in ACTION_MOVE and ACTION_CANCEL **
//触
1、在cocos2dx 点击事件分析(2)中,我们已经从java端分析了,单手触摸和多手触摸屏幕。
num --- 1,不论单点触摸还是多点触摸,这个值都是1
ids[] --- 触摸事件的ID
void CCEGLViewProtocol::handleTouchesBegin(int num, int ids[], float xs[], float ys[])
{
CCSet
1、
添加单点触摸事件,单点触摸事件有优先级,bSwallowsTouches是否吞噬,高优先级的
会优先响应,而且可以吞噬事件,不让触摸事件往低优先级传递。
void CCTouchDispatcher::addTargetedDelegate(CCTouchDelegate *pDelegate, int nPriority, bool bSwallowsTouches)
{
经过CCEGLViewProtocol的handleTouchesBegin,handleTouchesMove,handleTouchesEnd,handleTouchesCancel处理,
都会CCTouchDispatcher中的下面这些函数,而且都会调用touches,那我们就分析一下touches这个函数
void CCTouchDispatcher::touchesBegan(CCSe
cocos2dx音效的实现分析: 上面那个图是cocos2dx音效部分的实现结构图,总体的思想是: 使用同一个SimpleAudioEngine.h头文件,然后在不同平台下对应不同 的实现文件,不同平台编译不同的实现文件,这就要求这个类的函数定义 成员在各个平台下统一。其实这也可以理解为一种跨平台的实现方式。 这里分析android部分: 1、预加载背景音乐
void SimpleAudioEng
cocos2dx文件管理类是一个很重要的类,这里对这个类进行一下分析:
CCFileUtils是文件管理类的基类,不同平台下android,ios,win32都有
继承于这个类的子类,如android
class CC_DLL CCFileUtilsAndroid : public CCFileUtils
1、单例类:
static CCFileUtils* sharedFileUtils()
在1中,我只是针对整体结构进行了分析,那么在2中,我将会对一些我们常用的函数进行分析。
//获取给定文件名的全路径
//下面这很长一段注释,通过举例子,像我们说明cocos2dx获取文件全路径的规则。
//这段我就不翻译了,直接通过代码来看。
/** Returns the fullpath for a given filename.
Fir
在2中,我们分析了几个函数,在这一篇中我们继续分析其他一些函数。
1、
在2中,多次用到了m_searchPathArray(搜索路径),那这个搜索路径怎么来的呢?
我们可以通过setSearchPaths这个函数来设置搜索路径
void CCFileUtils::setSearchPaths(const std::vector<std::string>& searchPaths)
{
b
在3中,我们又分析了几个函数,在这一篇中我们继续分析其他一些函数。
1、android平台
unsigned char* CCFileUtilsAndroid::getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize)
{
return doGetFileData(pszFil
写这篇文章,没有花我多少时间。但是由于我的笔记写在云笔记中,图片也多。csdn也不支持直接复制粘贴图片,可以说把笔记移植过来比我当初写还要费事,希望改进吧 从入口开始分析,我们来看看addaction函数,他接受一个动作,并绑定自己,是否暂停取决于节点的running属性。 我们来具体看看ActionManager这个类 class CC_DLLActionManager : public R
这篇博客是建立在之前的http://blog.csdn.net/zhancaihua/article/details/44856289 如果没看过这篇博客,请先看 真心懒得一个一个去贴贴图片了,我直接把笔记做成一整张的图片,只要贴一次图图就ok,我是不是很聪明
创建完一个新项目之后,我们可以简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*文件夹就不用说了,是对应的平台的解决方案,res专门存放我们的游戏资源,scripts存放我们的lua代码,sources中有我们熟悉的AppDelegate类,我们主要常用的就两个文件夹,res和scripts(我这不是废话吗) 好吧,还是再打开scripts文件夹看下, 该文件下有main.l
GUIReader分析(1):
1、GUIReader用于cocostudio所做UI界面导出json的解析,
并生成对应的UI元素。
GUIReader* GUIReader::shareReader()
{
if (!sharedReader)
{
sharedReader = new GUIReader();
}
return sharedRe
CocoStudio触摸事件处理: 1、
注册触摸事件处理函数:
方法:
/**
* Sets the touch event target/selector of the menu item
*/
void addTouchEventListener(CCObject* target,SEL_TouchEvent selector);
如上面所示,我们看到这里
摘自网上的android生命周期图: cocos2dx-2.X前后台切换分析,基于android平台:
1、从后台进入前台
项目的activity一般继承自Cocos2dxActivity,看过activity生命周期的
都知道onCreate,onResume等方法,这些函数是activity生命周期中
最重要的函数,具体什么时候调用,可以查看相关资料。
//刚进入游戏和游戏从
cocos2dx 音频模块分析(2): 背景音乐部分 我在(1)已经分析了一些东西,这里接着分析,这一篇我们主要分析背景音乐文件的播放,
还是基于android平台:
1、
这里只是背景音乐的预加载,为什么要进行预加载呢?
主要是加载音乐文件是比较耗时的,如果我们没有预加载就直接播放也是可以的,
但是会有一定的延时,因为如果没有预加载,就直接播放,也是会先进行加载音乐文件,
然后进行播放。
vo
cocos2dx 音频模块分析(3):背景音乐部分 我在(2)已经分析了背景音乐文件的预加载preloadBackgroundMusic和播放playBackgroundMusic两个函数,
这里接着分析,还是基于android平台:
1、
//暂停函数,用于音乐的暂停
void SimpleAudioEngine::pauseBackgroundMusic()
{
//在SimpleAu
cocos2dx 音频模块分析(4): 音效部分 我们上面几篇分析了cocos2dx音频模块的音乐部分,从这篇开始,
我们分析下音效部分:
1、
//预加载音效文件:pszFilePath 音效文件名
void SimpleAudioEngine::preloadEffect(const char* pszFilePath)
{
//获取音效文件的全路径,如果是apk包里的路径,则不包含a
cocos2dx 音频模块分析(5): 音效部分 我们上一篇中分析的音效部分的预加载和播放函数,这一篇来分析下其他函数:
1、
暂停某个播放中的音效
//注意这里的nSoundId不是java端的soundID,而是streamID
//不要被参数的名字迷惑了。
void SimpleAudioEngine::pauseEffect(unsigned int nSoundId)
{
pau