Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x v3.3 MoveTo and MoveBy(windows)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_195_1@moveTo和MoveBy可以使精灵移动,区别在于MoveTo是移动到给定的坐标点;而MoveBy是从当前坐标点移动给定的坐标点这么多的距离。举个例子,假定精灵当前的坐标点是(x,y),分别给MoveTo和MoveBy指定一个坐标点(x1,y1),那么MoveTo和MoveBy最终的效果分别如下:

@H_195_1@moveTo:(x,y) → (x1,y1)

@H_195_1@moveBy:(x,y) → (x + x1,y + y1)

@H_195_1@moveTo和MoveBy各属一类,它们的继承关系如下:

接下来看每个类有什么接口,并结合实例说明。

@H_195_1@moveBy:

1、成员变量:

protected:

private:

2、成员方法:

(1) static MoveBy* create(float duration,const Vec2& deltaPosition);

例:

auto mymoveBy = MoveBy::create(3.0f,Vec2(0,500));

// 用1秒的时间,向右上移动的MoveBy,具体效果就是x和y轴移动效果的组合。

auto mymoveBy = MoveBy::create(1.0f,100));

实现源码:

关键点总结:

MoveBy::create()可以创建一个MoveBy动作,创建过程中可以指定动作持续时间以及动作具体要向哪个方向(x轴是左负右正,y轴是下负上正)移动多少。

♂ @H_986_34@moveBy并没有具体实现运动的过程,它只相当于一个配置。并且配置还进行了细化,其父类负责动画的持续时间,而MoveBy只负责偏移的坐标。

(2) virtual MoveBy* clone() const override;

例:

实现源码:

关键点总结:

MoveBy::clone()就是克隆一个给定的动作,函数名字起得很形象。

源码实现觉得应该更简洁写,调用MoveBy::create()即可。

(3) virtual MoveBy* reverse(void) const override;

例:

实现源码:

关键点总结:

♂ MoveBy::reverse()创建一个与给定动作相反的动作,名字依旧起得很形象。

♂ 源码实现部分手动指定了相反的偏移坐标,觉得可以封装个Vec2::getNegate()之类的方法。

(4) virtual void startWithTarget(Node *target) override;

virtual void update(float timE) override;

例:

实现源码:

关键点总结:

MoveBy::startWithTarget()用于初始化成员变量,其父类的startWithTarget()用于将动作与精灵绑定。

♂ MoveBy::update()是在绘制屏幕的过程中不断被调用的,每次被调用都使用setPosition()更新精灵的位置。

♂ 开启CC_ENABLE_STACKABLE_ACTIONS可以实现同一个精灵上多个MoveBy动作的组合效果,而关闭后只有最后一个MoveBy动作生效。

@H_195_1@moveTo:

附加:

大佬总结

以上是大佬教程为你收集整理的cocos2d-x v3.3 MoveTo and MoveBy(windows)全部内容,希望文章能够帮你解决cocos2d-x v3.3 MoveTo and MoveBy(windows)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。