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.当我们创建一个节点的时候,调用初始化方法,返回了一个包含执行着精灵动画的精灵子节点,这就达到了我们想要的效果,我们可以对精灵节点进行各种操作,设置位置等等。
注意:
当一个节点中包含子节点时,如果对父节点进行操作,子节点也会跟着受影响。