zoukankan      html  css  js  c++  java
  • 关于Cocos2d-x中节点和精灵的关系以及初始化

    1.每一个对象类都有一个自己public的一个create函数(等价于CREATE_FUNC),和init函数。

    2.create函数返回的是自身的类型,init函数是在ceate函数被调用的时候自动调用。

    3.如果是场景对象类的话,还要public一个 static cocos2d::Scene* createScene();的函数,返回值是Scene类型

    如果我们要呈现一个会动的人

    1.定义一个对象类,继承自Sprite

    3.在init函数中

     //执行父类方法

    Sprite::init(); 

    //设置精灵节点纹理图案,同时把图片的大小自动赋值给精灵节点的节点大小

    setTexture("s_1.png");  

    //设置精灵节点的整体缩放

    setScale(0.2); 

    //设置精灵节点的物理刚体,以精灵节点的节点大小为刚体大小

    setPhysicsBody(PhysicsBody::createBox(this->getContentSize()));  

    //执行动画

    Animation * animation = Animation::create();
    animation->addSpriteFrameWithFile("s_1.png");
    animation->addSpriteFrameWithFile("s_2.png");
    animation->addSpriteFrameWithFile("s_3.png");
    animation->addSpriteFrameWithFile("s_4.png");
    animation->addSpriteFrameWithFile("s_5.png");
    animation->addSpriteFrameWithFile("s_6.png");
    animation->setDelayPerUnit(0.1f);
    animation->setRestoreOriginalFrame(true);
    //设置动画型的动作
    auto animate = Animate::create(animation);
    this->runAction(RepeatForever::create(animate));

    //设置刚体属性

    getPhysicsBody()->setRotationEnable(false);  //刚体在运动碰撞过程中不旋转

    getPhysicsBody()->setContactTestBitmask(1);  //刚体参与碰撞检测

    getPhysicsBody()->getShape(0)->setFriction(0);  //刚体表面摩擦系数为0,无摩擦力

    getPhysicsBody()->getShape(0)->setRestitution(0);  //刚体表面弹性系数为0,不弹起来


    return true;

    4.当我们创建一个节点的时候,调用初始化方法,返回了一个包含执行着精灵动画的精灵子节点,这就达到了我们想要的效果,我们可以对精灵节点进行各种操作,设置位置等等。

    注意:

    当一个节点中包含子节点时,如果对父节点进行操作,子节点也会跟着受影响。

  • 相关阅读:
    【问题 & 解决】git 克隆项目时超时
    【荐】开源Winform控件库:花木兰控件库
    virtualenv Python 项目环境搭建必备
    英文电影评论情感分析
    中华古诗词知识图谱构建之数据获取
    基于Word2vec的诗词多情感分析
    中华古诗词知识图谱之网页设计及实现(完结)
    1211诗词时空背景
    1217诗词鉴赏
    中华古诗词知识图谱之实体关系构建&导入neo4j数据库
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5721129.html
Copyright © 2011-2022 走看看