# cocos2d-x v3.9 关于RotateTo和SkewTo的疑问

1、

auto myRotateTo = RotateTo::create(3, 270);
mySprite->runaction(myRotateTo);

2、

auto myRotateTo = RotateTo::create(3, -181);
mySprite->runaction(myRotateTo);

void RotateTo::calculateAngles(float &startAngle, float &diffAngle, float dstAngle)
{
// 将startAngle更新为对360.0°求余的角度。
// 比如startAngle传进来是721.7°，更新后为1.7°。
if (startAngle > 0)
{
startAngle = fmodf(startAngle, 360.0f);
}
else
{
startAngle = fmodf(startAngle, -360.0f);
}

diffAngle = dstAngle - startAngle;    // 得到目标角度与起始角度之间的差值。
if (diffAngle > 180)
{
diffAngle -= 360;
}
if (diffAngle < -180)
{
diffAngle += 360;
}
}

3、

auto myRotateTo = RotateTo::create(3, 640);
mySprite->runaction(myRotateTo);

4、

auto myRotateTo = RotateTo::create(3, -541);
mySprite->runaction(myRotateTo);

5、

auto myRotateTo = RotateTo::create(3, 899);
mySprite->runaction(myRotateTo);

6、

auto myRotateTo = RotateTo::create(3, -731);
mySprite->runaction(myRotateTo);

**至此做个总结：

void RotateTo::calculateAngles(float &startAngle, float &diffAngle, float dstAngle)
{
diffAngle = fmodf(dstAngle, 360) - fmodf(startAngle, 360);
diffAngle = fmodf(diffAngle, 360);

if(((diffAngle < 0) && (dstAngle >= 0)) || ((diffAngle > 0) && (dstAngle < 0)))
{
if(diffAngle > 0)
diffAngle -= 360;
else
diffAngle += 360;
}

return ;
}

SkewTo在计算变化角度的时候也有同样的问题。此外，SkewTo在对X轴的变化角度取余的时候为何对180°求余？

if (_startSkewX > 0)
{
_startSkewX = fmodf(_startSkewX, 180.f);    // 180°？
}
else
{
_startSkewX = fmodf(_startSkewX, -180.f);    // 180°？
}

sprite->setSkewX(181);
auto skewto = SkewTo::create(3, 191, 0);
sprite->runAction(skewto);

#### cocos2d-x实例学习(5)之SkewTo&SkewBy

2013-04-23 12:29:02

#### Cocos2d-x 3.2 Lua示例 ActionTest（动作测试）

2014-07-29 23:43:50

#### Cocos Creator 动作列表

2017-04-22 09:39:45

#### cocos2d-x实例学习(3)之RotateTo&RotateBy

2013-04-23 12:28:38

#### cocos2dx之CCRotateTo、CCRotateBy

2013-12-13 11:40:13

#### Cocos2d-html5之RotateTo&RotateBy

2015-05-10 17:39:49

#### Cocos Creator 动作列表(摘自官方文档)

2016-08-03 11:50:16

#### Cocos Creator中使用动作列表(官方文档摘录)

2016-12-01 11:43:47

#### cocos2d-x实例学习(7)之同时使用rotate,skew,scale

2013-04-23 12:29:21

#### Cocos2d-html5之SkewTo&SkewBy

2015-05-10 17:39:54