经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Cocos2d-x 学习笔记(11.5) SkewTo SkewBy
来源:cnblogs  作者:深潮  时间:2019/7/30 9:22:06  对本文有异议

1. SkewTo SkewBy

node朝X和Y方向的歪斜。SkewTo是SkewBy的父类。

1.1 成员变量 create方法

  1. // 两者成员变量一致
  2. float _skewX;
  3. float _skewY;
  4. float _startSkewX; // startWithTarget
  5. float _startSkewY;//
  6. float _endSkewX; // create参数
  7. float _endSkewY; //
  8. float _deltaX; // startWithTarget
  9. float _deltaY; //

SkewTo的_skewX和_skewY在构造函数默认为0。

SkewBy的_skewX和_skewY在init方法中用create的参数设置,即当前的斜值。还在startWithTarget方法中用到。

1.2 startWithTarget

SkewTo:

  1. ActionInterval::startWithTarget(target);
  2. _startSkewX = target->getSkewX();

当前X方向的斜值作为_startSkewX。

  1. if (_startSkewX > 0)
  2. {
  3. _startSkewX = fmodf(_startSkewX, 180.f);
  4. }
  5. else
  6. {
  7. _startSkewX = fmodf(_startSkewX, -180.f);
  8. }
  9. _deltaX = _endSkewX - _startSkewX;

X方向斜值要对+-180度求余,超过180度的斜值与求余后的斜值效果一致。(?)

重新计算_deltaX,使用了“就近原则”,同旋转动作一样:

  1. if (_deltaX > 180)
  2. {
  3. _deltaX -= 360;
  4. }
  5. if (_deltaX < -180)
  6. {
  7. _deltaX += 360;
  8. }

Y方向斜值要对+-360度求余(?)

  1. _startSkewY = target->getSkewY();
  2. if (_startSkewY > 0)
  3. {
  4. _startSkewY = fmodf(_startSkewY, 360.f);
  5. }
  6. else
  7. {
  8. _startSkewY = fmodf(_startSkewY, -360.f);
  9. }
  10. _deltaY = _endSkewY - _startSkewY;

  11. // 就近原则
  12. if (_deltaY > 180)
  13. {
  14. _deltaY -= 360;
  15. }
  16. if (_deltaY < -180)
  17. {
  18. _deltaY += 360;
  19. }

SkewBy:

设置的斜值加上开始的斜值作为_endSkewX。

用_skewX(create参数的斜值)对_deltaX进行设置可以理解。计算_endSkewX用不知道有何意义?在计算_deltaX之前用父类同名方法计算了_startSkewX和_deltaX,除了在父类方法计算_startSkewX之外,又有何意义?待解决。

  1. SkewTo::startWithTarget(target);
  2. _deltaX = _skewX;
  3. _deltaY = _skewY;
  4. _endSkewX = _startSkewX + _deltaX;
  5. _endSkewY = _startSkewY + _deltaY;

原文链接:http://www.cnblogs.com/deepcho/p/cocos2dx-action-skewto-skewby.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号