[3.x] (1)去掉"CC" [v3.3] 我们在 ui模块 下实现了一个新的Scale9Sprite类.它的内部实现比之前的Scale9Sprite更为简洁,功能也更为强大. 重新实现这个类的主要的原因是:Scale9Sprite在UI模块被大量使用. 现在UI模块不再依赖于extension模块. 通过采用全新的 ui::Scale9Sprite ,很多部件类内部的代码更加简洁,优雅. 什么是CCScale9Sprite呢?CCScale9Sprite对象,是一种CCSprite…
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/17297721 登录界面一个帐号/密码输入框或者主角命名框是少不了的.这节就来了解一下点九图的输入框的使用.这里只是介绍基础知识,并不进行平台的移植,也不处理跨平台可能出现的问题. 1.点九图CCScale9Sprite 1.1.概述 点九图做过移动开发的肯定不会陌生.采用的是PNG点9图,PNG点9图可以自适应各种环境,同时保持伸缩不变形.移动端的UI基本上都是按这个来做的…
[3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)按钮事件回调依旧为 cccontrol_selector ,没有使用 CC_CALLBACK_2 (4)按钮状态 CCControlState 改为强枚举 Control::State // NORMAL //正常 HIGH_LIGHTED //高亮(即在内部触摸状态下) DISABLED //禁用 SELECTED //选中 // (5)按钮事件 CCControlEvent 改为强枚举 Control::E…
---------------------------------------- 入口类main.cpp 主要控制类AppDelegate.cpp ---------------------------------------- 对象类CCObject 节点类CCNode ---------------------------------------- 导演类CCDirector 场景类CCScene 图层类CCLayer 精灵类CCSprite ------------------------…
概要 本章,会对“生产/消费者问题”进行讨论.涉及到的内容包括:1. 生产/消费者模型2. 生产/消费者实现 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3480016.html 1. 生产/消费者模型 生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”.“消费者”.“仓库”和“产品”.他们之间的关系如下:(01) 生产者仅仅在仓储未满时候生产,仓满则停止生产.(02) 消费者仅仅在仓储有产品时候才能消费,仓空则等待.(03) 当…
[3.x]     (1)去掉"CC"     (2)粒子位置模式 tPositionType 改为强枚举类型 ParticleSystem::PositionType:: // ParticleSystem::PositionType::FREE //自由模式: 不与发射器联系,自己走自己的路线 ParticleSystem::PositionType::RELATIVE //相对模式: 粒子发射器随粒子节点的移动而移动 ParticleSystem::PositionType::G…
上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: a.环境设定(帧率 初始化openGl和渲染器) b.场景管理 c.执行主循环 游戏就是个死循环 不断不断的渲染  就跟视频没两样 一帧一帧的绘制出来  话说提一下一帧为1/60秒  也就是说cocos2d里一秒渲染60次 导演的管理:   计时器  事件管理器  动作管理器 导演继承于REF  本质上就是一个单例类 获得导演类D…
11. 前⽅⾼能-装饰器初识本节主要内容:1. 函数名的运⽤, 第⼀类对象2. 闭包3. 装饰器初识 一:函数名的运用: 函数名是一个变量,但他是一个特殊变量,加上括号可以执行函数. ⼆. 闭包什么是闭包? 闭包就是内层函数, 对外层函数(非全局)的变量的引⽤. 叫闭包 可以使用_clesure_检测函数是否是闭包  返回cell则是闭包,返回None则不是 闭包的好处: 由它我们可以引出闭包的好处. 由于我们在外界可以访问内部函数. 那这个时候内部函数访问的时间和时机就不⼀定了, 因为在外部,…
[3.x]https://blog.csdn.net/qq_40338728/article/details/82964046 [屏幕适配] 1.两个分辨率 1.1.窗口分辨率 在main.cpp中有个设置窗口分辨率的函数.该函数是设置了我们预想设备的屏幕大小,也就是应用程序窗口的大小. // eglView->setFrameSize(480, 320); // 1.2.设计分辨率(可视区域) 在AppDelegate.cpp中也有个设置设计分辨率的函数.该函数是设置了我们游戏设计时候的分辨率…
[3.x] 将数学类 CCPoint.CCRect 改为v3.x版本的 Vec2.Rect 就好了. [简单碰撞检测] 在一些游戏中经常会遇到碰撞检测的情况,如愤怒的小鸟飞出去后,是否与石头发生碰撞. 虽然说有一个Box2D物理碰撞引擎,但是在这里还是需要掌握一下简单的碰撞检测方法. (1)矩形与矩形 (2)圆与圆 (3)矩形与圆 1.矩形与矩形 1.1.提出问题 问题:假设有两个矩形rect1,rect2,判断两矩是否碰撞相交(部分区域重叠). 如下四幅图中,图1.2.4发生碰撞,图3未发生碰…
[小知识] CCSpriteFrame     :精灵帧.    它是相对动画而产生的,其实就是一张纹理图片. CCAnimationFrame  :动画帧.    由精灵帧与间隔帧数组成,是动画CCAnimation中的一帧. CCSpriteFrameCache:精灵帧缓冲.用于存放精灵帧CCSpriteFrame的缓冲池. CCAnimationCache  :动画缓冲.  用于存放动画CCAnimation的缓冲池. delayPerUnit      :单位帧间隔.连续两个动画帧之间的…
[3.x]     (1)获取单例:sharedEngine() 改为 getInstance()     (2)实现了:音量的调节.     (3)修改了播放音效 playEffect() 的参数: // // 现在还不能完全支持所有参数,限制的功能如下: // 在Samsung Galaxy S2上如果启用了OpenSL那么pitch参数无效: // 在emscrippten, win32, marmalade上pitch/pan/gain参数无效 virtual unsigned int…
[3.x] (1)去掉 "CC" (2)TableViewCell 中: > unsigned int getIdx() 返回类型改为 ssize_t(类型为 long) (3)TableViewDataSource 中: > unsigned int idx 类型改为 ssize_t(类型为 long) (4)TableView 中: (A)排列方向:setDirection() > CCScrollViewDirection 改为强枚举 ScrollView::D…
[3.x] (1)去掉"CC" (2)设置虚拟键盘的编辑类型 > EditBoxInputMode 变为强枚举 EditBox::EditBoxInputMode // SINGLE_LINE //开启任何文本的输入键盘(不含换行) ANY //开启任何文本的输入键盘(含换行) DECIMAL //开启 数字 输入类型键盘(含小数点) PHONE_NUMBER //开启 电话号码 输入类型键盘 EMAIL_ADDRESS //开启 邮件地址 输入类型键盘 NUMERIC //开启…
前面我们讲了精灵贴图.标签.菜单.按钮.感觉似乎少了点什么?UI控件里是不是应该还有一个很重要的控件--编辑框.在手机网游中,启动游戏,过了开场动画后,基本上显示的第一个界面应该就是游戏的登录界面了吧.输入用户名.密码什么的,这些都是需要借助编辑框来实现输入的.点击文本,弹出虚拟键盘,输入账号密码,点击登录. cocos2dx引擎为我们提供了两类编辑框的控件: (1)CCTextFieldTTF(基于CCLabelTTF) (2)CCEditBox(基于CCControlButton) 本节就先…
[3.x]     (1)去掉 "CC" [CCLayerColor] 颜色布景层CCLayerColor有两个父类:CCLayerRGBA.CCBlendProtocol.相信有前面知识的积累,学到这也知道这两个类大致是干嘛的了.一个是颜色类,另一个是颜色混合协议. 所以CCLayerColor主要是在CCLayer类的基础上,扩展了三个属性: (1)修改图层背景颜色,RGB颜色. (2)修改图层透明度. (3)颜色混合模式. 此外,CCLayerColor也继承于CCNode类.所…
单例模式,说的通俗一点就是:创建某个类的全局唯一静态实例对象.也就是说从它创建开始,一直到整个游戏程序结束才会释放资源,期间一直保存的着数据. 单例类在大部分游戏中应该是必不可少的部分,如整个游戏音乐的开关控制.数据的加载与存储等都需要一个全局访问点来控制,那就需要用到单例类了. [3.x] shared***() 改为 getInstance() . [单例模式] 有一个很形象的比喻,摘自:http://blog.csdn.net/star530/article/details/2261022…
cocos2dx游戏引擎的重点是在于移动设备的跨平台开发,而移动设备上的游戏大部分都是通过屏幕触碰来进行的.比如主菜单的按钮触碰,打飞机中飞机的触碰移动,都需要用到触碰操作.想一想之前讲的菜单按钮CCMenu,菜单项的点击响应事件,其实就是触碰. cocos2dx引擎中实现触碰的类CCTouchDelegate.而CCLayer类默认继承了CCTouchDelegate接口,所以CCLayer的子类无须再重新使用这些接口,这样就很方便地为我们提供了触摸操作相关的操作. 触碰事件主要分为两类:单点…
定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等.cocos2dx为我们提供了定时器schedule相关的操作.其操作函数的定义在CCNode中,所以基本上大多数的引擎类都可以设置定时器,如CCLayer.CCSprite.CCMenu等. [本节内容] 默认定时器  :scheduleUpdate() 自定义定时器:schedule() 一次性定时器:scheduleOnce() [3.x] 几乎无变化. [schedul…
这篇是直接复制的别人的,太多了,难得写... [本节内容] CCMenu.CCMenuItem其具体的六个子类 [菜单CCMenu] 菜单CCMenu是用来装载菜单按钮的图层,图层中的子节点只能够是菜单项CCMenuItem或其子类.一般我们先创建菜单项CCMenuItem,然后使用一个或多个菜单项生成菜单CCMenu,最后把CCMenu加入当前图层. 由于CCMenu的父类为CCLayer,锚点为(0,0),无法设置锚点.CCMenu的默认原点坐标为屏幕正中心(winSize.width/2,…
[本节内容] cocos2dx三种文字字体的显示:CCLabelTTF(一般字体).CCLabelAtlas(自定义字体).CCLabelBMFont(自定义字体) CCLabelTTF CCLabelTTF是最简单,使用最方便的字体类,可以使用.ttf格式的字体.因为使用的是.ttf格式的字体,所以只要是系统有的字体,我们都可以用,且可以不必放到资源文件夹中.系统的字体文件位置:C:\Windows\Fonts.其父类为CCSprite,所以也继承了CCSprite所有的操作,所以也可以将其当…
[本节内容] 1.程序的基本组成:CCSprite(精灵).CCLayer(层).CCScene(场景).CCDirector(导演) 2.分析HelloWorld源码. 一.基本组成 cocos2d-x游戏引擎主要六个部分,分别为导演(CCDirector).摄像机(CCCamera).场景(CCScene).布景(CCLayer).精灵(CCSprite).以及动作(CCAction). (1)CCSprite(精灵) 精灵其实就是我们说的元素.比如一个游戏里的角色.NPC.怪物.物品等,乃…
已经入行工作半年多时间了,以前都是把这些东西记录在有道云上面的,现在抽出些时间把以前的笔记腾过来. 具体的环境配置就不用说了,因为现在已经是2018年,只需要下载对应版本解压后就能使用,不用再像多年前那样配置环境 需要的安装包:vs2013,cocos2d-x-2.2.3.zip,python-2.7.8 我自己用的是cocos2d-x-2.2.6,学习最初用的这个版本,后来才用的3.x版本 项目创建方法(使用python创建) cocos2.x版本 在tools\project-creator…
[3.x] (1)去掉 "CC" (2)CCProgressTimerType 改为强枚举 ProgressTimer::Type:: // RADIAL //扇形进度计时器 BAR //条形进度计时器 // 1.进度动作CCProgressTo.CCProgressFromTo 在讲解进度条CCProgressTimer之前,先讲讲和进度条有半毛线关系的两个动作类: (1)CCProgressTo        (2)CCProgressFromTo 为什么在之前的基本动作CCAct…
[3.x]     (1)去掉"CC" [CCGridAction] CCGridAction有两个子类:CCGrid3DAction.CCTiledGrid3DAction.而我们关注的就是这两个子类所派生出来的一些格子动作. (1)CCGrid3DAction:      是基于格子的动作. (2)CCTiledGrid3DAction: 是基于网格的动作. 扩展知识:格子和网格的区别在于对CCNode对象的显示内容划分方式不同.网格代表了更小.更多的格子数目. 1.CCGrid3…
[3.x]     (1)去掉"CC"     (2)新增了一些动作:(精力有限,新增的动作请自行摸索) > EaseBezierAction > EaseQuadraticActionIn / Out / InOut > EaseQuarticActionIn / Out / InOut > EaseQuinticActionIn / Out / InOut > EaseCircleActionIn / Out / InOut > EaseCubi…
在cocos2dx中提供了一个数据存储类CCUserDefault,可以作为一个轻量级的数据库来使用.它支持五种数据bool.int.float.double.string的存储. [3.x]     (1)去掉 "CC"     (2)获取单例:sharedUserDefault() 改为 getInstance()     (3)增加数据值:Data // void setDataForKey(const char* pKey, const Data& value); Da…
[3.x] (1)去掉前缀 "cc" (2)将 ccDraw***() 封装到了 DrawPrimitives 命名空间中. (3)重写绘图函数:         draw(Renderer *renderer, const Mat4& transform, uint32_t flags);         使用变化举例:ccDrawPoint() ==> DrawPrimitives::drawPoint(). (4)去掉宏定义 ccc3.ccc4.ccc4f ,分别改…
[3.x]     (1)去掉 "CC"     (2)滚动方向         > CCScrollViewDirection 改为强枚举 ScrollView::Direction // HORIZONTAL //只能横向滚动 VERTICAL //只能纵向滚动 BOTH //横向纵向都能滚动,默认方式 // 滚动视图类CCScrollView继承于CCLayer,故它会忽略锚点的设置,其锚点始终为(0,0).而我们知道CCLayer继承了触控事件CCTouch相关的函数.而…
[3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)CCControlEvent 改为强枚举 Control::EventType (4)CCControlEventValueChanged 改为 Control::EventType::VALUE_CHANGED (5)按钮事件回调依旧为 cccontrol_selector ,没有使用 CC_CALLBACK_2 (6)其他地方几乎无变化. 滑块控件CCControlSlider,应该也是很常见的UI控件,想…