原理专题提供原理的最新资讯内容,帮你更好的了解原理。
前言:这几天在做cocos2dx上的跨平台的socket库,看来看去也只能用BSD去实现了。因为要接收服务器的推送消息,所以要做成异步处理。也参考了很多别人的文章,本来是想能有个轮子直接给我用的,看来还是得自己重复造下。目前的想法是封装一个业务层,内部包含一个socket封装,使用pthread起一个线程去select接收数据,当有数据到达时,调用业务层的函数处理数据。业务层注册有界面层的回调函数
1、导演类里面有一个单例的scheduler  之后node这些里面有一个指针指向同一个 2、node scheduler(SELECTOR,_deltaTime)  等于把函数指针加进一个容器里面   3、mainloop里面调用drawScene  会调用_scheduler->update    4、Scheduler ::update( float dt)里面枚举函数指针 观察者模式: D
 之前看过很多的文章,都是讲解cocos2dx的引用计数原理。有好有坏,今天我也自己来写一篇引用计数的文章,并且开始尝试阅读cocos2dx的源码,把自己的收获更新到这个博客,不为多少人看。只为自己记录这一路的点点滴滴。 讲了这么多那么开始吧! 首先就是贴上cocos2dx的万物之源 Ref类,这个类是Node的基类,而所有的显示节点类都是继承自Node类,所以他算是cocos2dx的根。 CCR
ttf和fnt格式字体:http://www.cocoachina.com/bbs/read.php?tid=198184  首先要介绍一下,图字是怎么来的?其实这个很早很早了,记得80后在95年开始玩DOS下的仙剑奇侠传的时候,那些令人难忘的中文对话吧!DOS下做游戏,使用的是C语言,不要说写字了,很多复杂的操作甚至涉及驱动。那时候绘图就是利用将图片中的像素取出来后绘制在屏幕上,所以处理游戏中的
为了能够更好的使用cocos为我们提供的Sprite3D,我和大家分享一下Sprite3D中关于骨骼动画原理的部分,本文使用cocos2d-x 3.2版本,这是cocos首次出现3D骨骼动画的版本,相对与本文写出来时候最新的3.5版本,由于没有其他比如灯光等功能,3D骨骼动画模块读起来要更加的清晰。如果文章有纰漏或者错误的地方,也请大家指教。 目前引擎支持3种动画格式,分别是.obj,.c3b,.
  cocos2d-x源于cocos2d-iphone,为了与Objective-c一致,cocos2d-x也采用了引用计数与自动回收的内存管理机制。 要现实自动内存回收,需继承于cocos2d-x的根类CCObject。当然自动释放会影响性能的。   cocos2d-x中有很多静态工场方法,例如以create开头的,这些静态工场方法创建的对象都使用的autorelease,试想如果不用autor
  程序运行后每达到一帧的时间间隔就会执行一次mainLoop void CCDisplayLinkDirector::mainLoop(void) { //判断是否需要释放CCDirector,通常游戏结束才会执行这个步骤 if (m_bPurgeDirecotorInNextLoop) { m_bPurgeDirecotorInNextLoop = f
      首先CCAction是所有动作的基类,如下图继承关系:   那么来看看CCAction的定义:  class CC_DLL CCAction : public CCObject { public: CCAction(void); virtual ~CCAction(void); const char* description(); vi
    屏幕捕捉到触摸消息的派发流程: 如果有一个组件如果想要接收触摸事件,会通过继承一个CCTouchDelegate接口注册给CCTouchDispatcher,CCTouchDispatcher 中维护了一个CCTouchHandler的队列。CCTouchHandler 是CCTouchDelegate两个派生类的包装类。在接到触摸事件之后,遍历 所维护的CCTouchHandler 队列
今天使用了EditBox,记录下几点重要的,可以说是CCEditBox实现原理 1.CCEditBox继承CCControlButton, CCIMEDelegate 2. CCEditBox实现了touchDownAction方法 ,并在 CCEditBox::initWithSizeAndBackgroundSprite方法中 调用了 this->addTargetWithActionForC
           clippingNode是利用opengl的裁剪缓冲区实现的,因为最近有使用这个功能需要,顺便把这部分实现看看了看。    opengl的裁剪主要有以下几个步骤: 1、开启裁剪缓冲区 2、设置裁剪缓冲区中的mask。 3、正常绘制图形,这个时候会根据裁剪缓冲区的值和设置好的比较函数进行计算,根据通过与否选择是否会知道framebuffer 4、绘制完成之后关闭裁剪缓冲区 这几
幸运的,SpriteBuilder使得适配(安卓)多种多样的屏幕尺寸变得容易起来,因为Android Xcode插件允许你使用任何Cocos2D的特性并且可以继续使用很多iOS的框架(frameworks) BridgeKit使得你可以访问所有重要的Android特性而不去写C++或Java的代码.
cocos2d-x的CCAffineTransform相关变换实现原理   稍有opengl或3d基础的都知道平移/旋转/缩放这几个基本模型视图变换的实现原理, 最近看了下cocos2d-x相关部分的实现, 了解了这些实现那些各种坐标变换基本不在话下了, cocos2d-x本身还是相对简单的引擎. CCAffineTransform struct CCAffineTransform { float
Cocos2dx 基于opengl es 实现跨平台功能,虽然android 已经支持native ,还是需要使用到android平台中的特性。 首先从程序的主入口 MainActivity MainActivity跟进,java首先加载static函数,将libgame.so导入进来, 根据activity的生命周期,首先调用oncreate()方法,由于继承Cocos2dxActivity类将
大部分游戏里有很多个场景,场景之间需要切换,有时候切换的时候会进行背景音乐的播放和停止,因此对这块内容进行了总结。 场景切换生命周期 场景切换用到的函数: bool Setting::init() { if( !Layer::init() ) { returnfalse; } log("Settinginit");
一、在cocos2.x版本中,大多数事件,包括触摸、键盘等的响应机制,是通过重写父类的虚函数来实现的,这样的事件响应机制耦合度太高,导致的结果就是通用性不好、模块化不高。例如父类中关于触摸事件的虚函数: 二、而在cocos3.x版本中,原来的事件系统得到了较好的升级,演变成了一个较为独立、完善和通用的组件模块,即事件分发系统,不仅可以用来分发各种系统事件,也可以用来分发用户自定义事件。其大致工作流
本文基于3.2版本,适用于3.0及其以上版本,2.X版本可能是使用不同的方式进行处理,本文未对比2.X版本的源代码。首先看一下cocos2d-x中对象的继承体系:                                                 从图中可以看出Ref是cocos2d-x中一切对象的起源(这里只列出了一部分的类),继承自Node节点的对象引擎会在每帧对其进行更新rend
http://www.cocoachina.com/cms/wap.php?action=article&id=8402
一。调用代码 加载代码 CCNode* GameOverScene::loadCCBI(const char * pCCBFileName, const char * pCCNodeName, CCNodeLoader * pCCNodeLoader) { CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibrary::