220 likes | 526 Views
Cocos2d 培训. 移动互联网部 姬鑫宇. 培训内容. Cocos2d 主要功能及其相应的特点 Cocos2d 的常用功能与常用控件 锚点的概念 游戏例子说明. Cocos2d 功能. 场景管理( Workflow ):非常容易管理不同场景( Scene )。 场景切换( Transitions ):可以方便地从一个场景切换到另外一个不同风格的场景,并支持各种场景间的切换特效。 精灵( Sprites )和精灵表单( Sprite Sheets ):支持快速而方便的精灵以及高效的精灵表单。
E N D
Cocos2d培训 移动互联网部姬鑫宇
培训内容 • Cocos2d主要功能及其相应的特点 • Cocos2d的常用功能与常用控件 • 锚点的概念 • 游戏例子说明
Cocos2d功能 • 场景管理(Workflow):非常容易管理不同场景(Scene)。 • 场景切换(Transitions):可以方便地从一个场景切换到另外一个不同风格的场景,并支持各种场景间的切换特效。 • 精灵(Sprites)和精灵表单(Sprite Sheets):支持快速而方便的精灵以及高效的精灵表单。 • 特效(Effects):特效包括波浪(Waves)、旋转(Twirl)、透镜(Lens)、涟漪(Ripple)和液体(Liquid)等。 • 动作(Actions):告诉精灵可以做什么动作。动作分为基本动作、组合动作、缓冲动作和其他动作。基本的动作有移动(Move)、旋转(Rotate)、缩放(Scale)和跳跃(Jump)等;组合动作有顺序动作(Sequence)、并发动作(Spawn)、重复动作(Repeat)、反转动作(Reverse);缓冲动作有Exp、Sin、Cubic等;其他动作有CallFunc、OrbitCamera等。 • 菜单和菜单按钮(Menus &MenuItems):可以轻松地创建内部菜单和菜单按钮。 • 物理引擎(Physics Engine):Cocos2D内置支持Box2D和Chipmunk两个物理引擎。 • 粒子系统(Particle System):Cocos2D中包含一个强大的粒子系统,可以给游戏添加各种很炫的效果,如烟、火、雨、雪等。
Cocos2d功能 • 文本渲染(Text Rendering):支持可变和固定宽度的字体。在Cocos2D中处理文字非常容易,这一点对于显示游戏中的菜单和得分,以及进行辅助性的游戏测试等都非常有用。Cocos2D中内置了对TrueType字体的支持,同时还支持快速位图字体渲染系统。这样,开发者仅需编写数行代码即可在屏幕上显示文字。 • 纹理图集(Texture Atlas):支持纹理图集,从而大大节省了应用中的内存占用。 • 瓷砖地图(Tiled Maps):支持正交地图、斜视角地图和六边形地图。 • 视差滚动(Parallax Scrolling):支持使用视差滚动来营造立体的背景氛围。 • 音效:支持背景音乐和游戏中的音效。 • Streak Motion:支持Streak Motion(一种类似疾驰的飞机尾部喷出的气体的效果)。 • 渲染到纹理(Render Texture):支持渲染到纹理。 • Point Based API:支持Retina显示,可以使用同样的坐标值来处理普清和高清模式下的游戏元素布局。
Cocos2d功能 • 输入设备:支持触摸/加速计(iOS),键盘/鼠标(Mac)。 • 显示模式:支持纵向和横向模式(iOS),自动全屏(Mac)。 • 暂停/恢复:内置支持游戏的暂停/恢复。 • 快速纹理:支持8位、16位和32位PVRTC压缩纹理。 • 编程语言:Cocos2D-iPhone使用Objective-C编写,同时可混合使用C或C++语言。 • 图形引擎:Cocos2D 1.x版本支持OpenGL ES 1.1(iOS)/OpenGL 1.5(Mac),而最新的Cocos2D v2.0则支持OpenGL ES 2.0。
CCDirector职责与常用函数 • CCDirector,主要职责是管理场景和切换场景,游戏暂停等.另外他还负责初始化openes相关的一东西.是一个单例类 • 常用函数 • runWithScene运行场景 • replaceScene替换场景 • getRunningScene获得当前场景 • getAnimationInterval获取帧间距 • setAnimationInterval设置帧间距 • isDisplayFPS是否显示帧率 • setDisplayFPS设置是否显示帧率,可以再调试阶段使用 • getWinSize获取窗口大小 • getWinSizeInPixels获取窗口像素大小 • drawScene绘制场景所有元素
CCScene职责与常用函数 • CCScene,场景类,游戏场景一般是指在某个时刻能独立运行的部分,包括可见的怪物,地形和不可见的逻辑脚本等.例如一个游戏的一个特定关卡,游戏菜单,过场动画等都是一个独立的场景.cocos2d中的场景又由不同的层(CCLayer)组成. CCScene是CCNode的子类, 主要作用是一个容器
CCNode职责与常用函数 • 节点类,是游戏中最重要,最基础的对象,在cocos2dx中,任何可见的或不可以的游戏逻辑对象都是一个节点,节点有以下特点: • a) 是一个容器,可以包含任意多个其它节点. • b) 可以执行一个行为(CCAction) • c) 可以执行一定时的任务回调 • d) 拥有坐标变换(transform)信息,如postion,scale,rotation等 • e) 由于一个节点可以添加任意个子节点,所有的节点组成一个树状结构,因此父节点的坐标变换会影响子节点在世界坐标系中的坐标,一个节点只能拥有一个父节点 • 常用函数: • getScale——获取缩放setScale——设置缩放addChild——添加子节点 • removeChild——删除子节点 • removeFromParentAndCleanup——从父节点移除,同时移除子节点 • removeChildByTag——移除标记节点removeAllChildrenWithCleanup——移除所有子节点 • getChildByTag——获得标记节点runAction——执行动作stopAction——停止动作 • stopAllActions——停止所有动作scheduleUpdate——执行update函数,需要重载 • unscheduleUpdate——停止执行update函数 schedule(SEL_SCHEDULE selector);——执行回调 • unschedule(SEL_SCHEDULE selector); 停止执行回调
CCLayer职责与常用函数 • CCLayer,层类,继承自CCNode类,主要是起到容器和处理案件消息的作用 • registerWithTouchDispatcher注册事件监听 • ccTouchBegan按下按键处理回调,需重载 • ccTouchesMoved移动按键处理回调,需重载 • ccTouchesEnded弹起按键处理回调,需重载 • layerWithColorWidthHeight用颜色初始化函数
CCMenu职责与常用函数 • CCMenu菜单类,主要用于添加按钮,处理案件消息。CCMenu从CClayer派生而来,可以处理输入消息,CCMenu包含多个CCMenuItem对象,在接收到输入消息之后,根据触摸位置,将输入消息分发到相应MenuItem,执行回调函数。 • CCMenuItem菜单项的基类,目前cocos2d只从CCMenuItem派生了CCMenuItemLabel,CCMenuItemSprite,CCMenuToggle三个类.当然也可以派生新的类,实现其它的菜单项,例如 checkbox等. • 主要函数: • menuWithItems: • 例子: • CCMenuItemSprite * timerItem = • CCMenuItemSprite::itemFromNormalSprite( • CCSprite::spriteWithFile("tomorrowVisit/syyd-ui_07a.png"), • CCSprite::spriteWithFile("tomorrowVisit/syyd-ui_07a.png")); • timerTomorrowVisitButton = CCMenu::menuWithItem(timerItem); • timerItem->setTarget(this, menu_selector(UserStateLayer::buttonTomorrowVisitAction));
CCScheduler职责与常用函数 • CCScheduler类似于定时器,游戏从开始就一直有一个公用的定时器在后台运行,通过CCScheduler::sharedScheduler()可以获取,可用于定时执行某些任务 • 主要函数: • scheduleSelector定时执行回调 • scheduleUpdateForTarget定时执行update函数,需重载 • unscheduleSelector取消定时执行回调 • unscheduleUpdateForTarget取消执行update函数 • unscheduleAllSelectorsForTarget取消目标的所有定时回调 • unscheduleAllSelectors取消所有定时回调 • pauseTarget暂停目标的定时回调 • resumeTarget恢复目标的定时回调
CCSprite职责与常用函数 • 精灵类,主要用于图像的绘制 • 主要函数: • spriteWithTexture通过纹理创建精灵 • spriteWithSpriteFrameName通过已经加载的大图里面的小图名字创建精灵 • spriteWithFile通过文件创建精灵 • addChild增加子节点 • removeChild删除子节点 • setPosition设置位置 • setPositionInPixels设置像素位置 • setRotation设置旋转角度 • setSkewX设置x轴扭曲 • setSkewY设置y轴扭曲 • setScaleX设置x轴缩放 • setScaleY设置y轴缩放 • setScale设置等比例缩放 • setAnchorPoint设置描点 • setIsVisible设置是否可见 • setFlipX设置x轴翻转 • setFlipY设置y轴翻转 • setContentSizeInPixel设置占用大小
CCSprite职责与常用函数 • 例子: • CCSprite * textTake = CCSprite::spriteWithFile("tomorrowVisit/ui_icon_19.png"); • textTake->setPositionInPixels(ccp(16,32)); • textTake->setAnchorPoint(ccp(0,0)); • timerOnlineRewardText->addChild(textTake); • CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("UIState/UIStateDeNA.plist"); • CCSprite *sp1 = CCSprite::spriteWithSpriteFrameName("ui_icon_15a.png");
CCLabelTTF职责与常用函数 • CCLabelTTF:文字类,主要用户显示文字 • 常用函数: • labelWithString通过char型数字初始化文字 • setString设置修改文字 • getString获取文字 • 例子: • CCLabelTTF* freeNum = CCLabelTTF::labelWithString(DENA_PRE_FREE_NUM, CCSizeZero, CCTextAlignmentLeft, "Marker Felt", 20);
CCLabelBMFont职责与常用函数 • 另外一种文字类,类似于图片状文字。主要用于数字字符的显示,一般数字是美工做好的图片,通过特定工具比如bmfont生成.fnt文件。 • 主要函数: • labelWithString初始化字串 • setString设置字串 • getString获取字串 • 例子: • CCLabelBMFont* nNumLable1; • nNumLable1 = CCLabelBMFont::labelWithString("0", "Font/RedFont1.fnt"); • nNumLable1->setPosition(ccp(26, 7)); • numBg1->addChild(nNumLable1);
CCAction职责与常用函数 • 动作:action,CCAction,动作类,CCAtion就好像指派给CCNode的命令一样,在特定时间(或立即)内修改CCNode的属性,例如位置,旋转,缩放等,主要用于动画效果 • 常用的包括: • CCSequence:序列 • CCSpawn:综合 • CCRotateTo:旋转到 • CCRotateBy:旋转 • CCMoveTo:移动到 • CCMoveBy:移动 • CCScaleTo:缩放到 • CCScaleBy:缩放 • CCFadeIn:淡入 • CCFadeOut:淡出 • CCSkewTo:扭曲到 • CCSkewBy:扭曲 • CCJumpBy:跳动 • CCBezierBy:bezier曲线
CCAction职责与常用函数 • 以下是一个例子 • CCFiniteTimeAction *act1 = CCMoveBy::actionWithDuration(0.8, ccp(0, 56)); • CCFiniteTimeAction *act2 = CCFadeTo::actionWithDuration(0.8,0); • CCFiniteTimeAction *spawnAct = CCSpawn::actions(act1, act2, NULL); • iconOnlineRewardFly->runAction(CCSequence::actions( • spawnAct, • CCCallFunc::actionWithTarget(this, callfunc_selector(UserStateLayer::onlineRewardFlyOver)), • NULL)); • Act1表示向上移动56像素,act2表示淡入到0.8的透明度,spawnAct表示两者的综合。 • 此外还有一个序列,表示执行完动画之后执行UserStateLayer::onlineRewardFlyOver函数。
Cocos2d基本框架类图说明 • CCApplication,负责相关平台的初始化,消息处理等,是一个单例类 • CCDirector,主要职责是管理场景和切换场景,游戏暂停等.另外他还负责初始化openes相关的一东西.也是一个单例类 • CCNode,节点类,是游戏中最重要的对象,在cocos2dk中,任何可见的或不可以的游戏逻辑对象都是一个节点 • CCAction,动作类,CCAtion就好像指派给CCNode的命令一样,在特定时间(或立即)内修改CCNode的属性,例如位置,旋转,缩放等 • CCScene场景类 • CCLayer图层类,层是一个可以绘制的区域.
游戏例子说明 • 是男人就飞1万米游戏