zoukankan      html  css  js  c++  java
  • cocos2d-x基本元素

    from://http://www.cnblogs.com/ArmyShen/p/3239664.html

    1、CCDirector(导演类)

    控制游戏流程的主要类,主要负责设定游戏窗口、切换场景、暂停或恢复场景等工作。

    由于CCDirector的全局性,所以它是一个单例,整个程序中只会存在一个它的实例:

    //获得CCDirector实例
    CCDirector *pDirector = CCDirector::sharedDirector();
    复制代码
    /*--------CCDirector场景管理方法--------*/
    //程序启动时运行第一个场景时调用
    void runWithScene(CCScene *pScene);
    
    //直接替换当前运行的场景为pScene,这是最常用的一个场景切换方法
    void replaceScene(CCScene *pScene);
    
    //将当前场景暂停,压入到带待执行场景栈中,设pScene为当前运行的场景
    void pushScene(CCScene *pScene);
    
    //释放当前场景,并从待执行场景栈中弹出栈顶场景,将其设为运行场景。如果栈为空,则退出程序。与pushScene结合使用
    void popScene(void);
    
    //暂停当前场景中的所有内容
    void pause(void);
    
    //恢复暂停的场景,与pause结合使用
    void resume(void);
    
    //结束场景,退出游戏
    void end(void);
    复制代码

    2、CCScene(场景)

    没有特别的功能。通常是作为层(CCLayer)的容器,它的另一个作用就是流程控制,可以利用CCDirector::replaceScene(CCScene *pScene)自由的切换场景。

    可以使用CCLayer替代CCScene,但是这样就不能使用CCTransitionScene实现场景间的切换效果了。

    3、CCLayer(层)

    CCLayer和CCScene有类似的作用,就是作为游戏元素的容器。不同的是,CCScene中通常包含一个一个CCLayer,而CCLayer中通常包含CCSprite、CCMenu、CCLabel等用户可见的节点元素。CCLayer另一个重要的作用就是接收用户的输入事件,包括触摸、重力加速、键盘输入等。

    4、CCSprite(精灵)

    CCSprite是游戏最重要的组成元素,游戏中的一草一木都是通过CCSprite体现出来的。创建CCSprite有很多种方式,使用起来也非常的灵活,具体参考源代码。

    5、CCNode(节点)

    CCNode是所有游戏元素的基类(CCScene、CCLayer、CCSprite等),因此这些子类节点共同拥有CCNode所提供的特性。也就是说继承自CCNode的可绘制节点都拥有比如位置、缩放、旋转、是否可见等属性,节点的最基本功能包括:

    1)包含其他CCNode对象 -- 可以把任何一个CCNode节点添加到另一个节点上去

    2)接收各种事件与回调 -- 如定时器事件

    3)执行动作 -- runAction

    6、定时器

    定时器:以一定的时间间隔,不断的检测游戏事件,从而使游戏发生动态变化的工具

    Cocos2d-x提供了两种方式的定时机制:

    1)update定时器 -- 该方法每帧都会被触发调用一次。CCNode默认没有开启update方法,可以调用scheduleUpdate()启用定时器,unscheduleUpdate()停止定时器,最主要的还需要重载一下CCNode的update(float)方法,需要定时更新的内容都在update函数中实现。

    复制代码
    //开启定时器
    this->scheduleUpdate();
    //每帧调用update函数,更新里面的内容
    void update(float delta)
    {
        i++;
    }
    复制代码

    2)schedule定时器 -- 该方法可以让用户设置触发调用的时间间隔。要注意的是,这个时间间隔必须大于2帧的间隔。

    复制代码
    //每隔1s调用一次updateGame函数
    this->schedule(schedule_selector(HelloWorld::updateGame), 1.0f);
    //updateGame函数
    void updateGame(float dt)
    {
        i++;
    }
    复制代码

    7、onEnter() / onExit()方法

    onEnter() -- 节点所在的场景即将显示的时候被调用

    onExit() -- 节点所在的场景即将退出时被调用

    通常一个继承自CCNode或CCLayer的类中都会有一个init()方法用于初始化这个节点上的数据,init这个方法也是对基类相同函数的重载,需要注意的是,init()这个方法会在onEnter()方法之前被调用。它们主要的区别就是init()方法只会在类初始化的时候被调用一次,而onEnter()方法会随着所在节点的隐藏显示可能会被调用多次。

  • 相关阅读:
    (拿来主义) SpringCloud | 第四篇: 断路器(Hystrix)
    (拿来主义) SpringCloud | 第三篇: 服务消费者(Feign)
    (拿来主义) SpringCloud | 第二篇: 服务消费者(rest+ribbon)
    (拿来主义) SpringCloud | 第一篇: 服务的注册与发现(Eureka)
    (拿来主义-10) Spring Boot中使用Swagger2构建强大的RESTful API文档(五)
    (拿来主义-9) Spring Boot构建RESTful API与单元测试(四)
    (拿来主义-8) Spring Boot属性配置文件详解(三)
    (拿来主义-7) Spring Boot工程结构推荐(二)
    springMVC配置文件路径问题
    实现可用的插件系统
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/3385545.html
Copyright © 2011-2022 走看看