cocos2d-x学习日记 - 1. 基础概念 - 导演, 场景, 层, 精灵

1. 基础概念 - 导演, 场景, 层, 精灵

1. 导演(Director):
    a. Cocos2d-x核心, 用 getInstence() 获得 Director 实例.
2. 场景(Scene):
    a. 通过 Director 一系列方法控制游戏中不同场景的自由切换.
    b. 常用方法:
        i. runWithScene(Scene *scene) 启动游戏, 并运行 scene 场景.主程序第一次启动场景使用.
        ii. pushScene(Scene *scene) 将当前运行中的场景压入栈中, 再将传入的 scene 设置为当前运行场景.
        iii. replaceScene(Scene *scene) 直接使用传入的 scene 替换当前场景, 当前场景被释放(切换场景最长用的方法).
        iv. popScene(Scene *scene) 释放当前场景, 再从代码执行场景中弹出栈顶场景, 将其设置为当前场景, 如果栈为空, 直接结束应用, 和 pushScene 结对使用.
        v. end() 释放和终止执行场景, 同时退出游戏.
        vi. pause() 暂停当前场景所有计时器和动作.
        vii. resume()  恢复当前场景所有计时器和动作.
    c. 场景是层的容器, 包含所有要显示的游戏元素. 通常需要完成一个场景时, 会创建一个 Scene 的子类, 并在子类中实现我们需要的功能. 比如, 我们可以在子类的初始化中载入游戏资源, 为场景添加层, 启动音乐等.
3. 层(Layer):
    a. Layer 是处理玩家事件响应的 Node 子类.
    b. 向场景中添加层: addChild(Node child), addChild(Node child, int zOrder), addChild(Node *child, int zOrder, int tag);
    c. 其中 child 就是节点, 对于场景而言, 通常我们添加的场景, 就是层.
    d. 创建3个不通层的例子:
    Auto layer = LayerColor::create(Color4B(0, 128, 128, 255));
    Layer->setContentSize(CCSizeMake(120, 80));
    Layer->setPosition(Point(50, 50));
    addChild(layer, 10);
    Auto layer1 = LayerColor::create(Color4B(128, 0, 128, 255));
    Layer->setContentSize(CCSizeMake(120, 80));
    Layer->setPosition(Point(100, 80));
    addChild(layer1, 20);
    auto layer2 = LayerColor::create(Color4B(128, 128, 0, 255));
    Layer->setContentSize(CCSizeMake(120, 80));
    Layer->setPosition(Piont(150, 110));
    addChild(layer2, 30);
4. 精灵(Sprite):
    a. 它可以移动, 旋转, 缩放, 执行动画, 并接收其他转换.
    b. 类关系简单描述:
        i. 使用 Texture2D 加载图片.
        ii. 用 Texture2D 生成对应的 SpriteFrame (精灵帧).
        iii. 将SpriteFrame 添加到 Animation 生成动画数据.
        iv. 用 Animation 生成 Animate (就是最终动画).
        v. 最后用 Sprite 执行这个动作.
    c. 创建精灵的几种方式:
        i. 直接创建:
            auto sprite = Sprite::create("HelloWorld.png");
            This->addChild(sprite, 0);
        ii. 使用纹理来创建:
            auto sprite1 = Sprite::creatWithTexture(TextureCache::getInstance()->addImage("HelloWorld.png"));
            This->addChild(sprite1, 0);
        iii. 使用精灵帧来创建:
            auto sprite2 = Sprite::creatWithSpriteFrameName("HelloWorld.png");
            This->addChild(sprite2, 0);
    d. Cocos2d-x 中实现精灵显示的基本过程:
        // 创建 Scene
        auto scene = Scene::create();
        // 创建 层
        Auto layer = HelloWorld::create(); 
        //  把层加入场景中
        Scene->addChild(layer);
        // 创建一个精灵
        auto sprite = Sprite::create("HelloWorld.png");
        // 把精灵加入到层中
        layer->addChild(sprite, 0);

example
example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值