Cocos2d iphone 使用CCScaleTo或CCScaleBy时,会移动CCSprite

Cocos2d iphone 使用CCScaleTo或CCScaleBy时,会移动CCSprite,cocos2d-iphone,anchor,box2d,scale,ccsprite,Cocos2d Iphone,Anchor,Box2d,Scale,Ccsprite,我几乎已经阅读了所有关于锚点和缩放的内容。当我缩放精灵的位置时,我仍然不知道它发生了什么 情况是这样的: 当我点击屏幕时,精灵的宽度将减少大约50%,高度将增加大约相同的比例。然后它会回到正常的规模 id scaleUpAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:0.5 scaleY:1.5] rate:1.0]; id scaleDownAction = [CCEaseInOu

我几乎已经阅读了所有关于锚点和缩放的内容。当我缩放精灵的位置时,我仍然不知道它发生了什么

情况是这样的:

当我点击屏幕时,精灵的宽度将减少大约50%,高度将增加大约相同的比例。然后它会回到正常的规模

id scaleUpAction =  [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:0.5 scaleY:1.5] rate:1.0];
id scaleDownAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.0 scaleY:1.0] rate:1.0];
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil];
[self.boxShape runAction:scaleSeq];
我不明白为什么缩放使精灵“移动”

如果我在屏幕上的位置(100100)有一个大小为40x60的精灵,当我缩小它时,它会向左移动。为什么?


谢谢。

通常,当缩放空间时,始终只有一个点保留在其位置上,其他点会移动。对于CCNode,该点是定位点。因此,在节点上选择要固定的点,并使其成为固定点

可能图像的固定点不位于图形的质心。在下一张图片中,应将固定点设置为红色圆点,ccp(0.85,0.5)左右

如果您的定位点位于中心(0.5,0.5),当上一个图形水平缩放时,它将向左移动(仅在视觉上!)


这是你的问题吗?

scaleX:0.5 scaleY:1.5
:这不是每个方向的50%。这在X方向上减少了50%,但在Y方向上只增加了33%。您可能想要
scaleY:2.0
我已经将锚点设置为(0.5f,0.5f),这意味着ccnode的中心。(我认为锚点的默认值也是一样的)我已经解决了我的问题。在我的例子中,当精灵的坐标改变时,背景会根据精灵的新坐标移动。每次为精灵设置动画(缩放)时,其主体位置也会更改。我以为缩放时会向左移动。。但事实是,背景被右移了。我真丢脸:)