如何增加(动画)两端方形的宽度?

时间:2016-01-13 13:49:27

标签: swift sprite-kit swift2

enter image description here

我创建了一个40x40的正方形,如上所示。我有一个4x40的条带,我想用来动画(增加)我的方块的宽度,直到它在一秒钟内占据整个屏幕的宽度,无论方块的位置如何。非常类似于双方加载进度条的情况。

更新

我忘了提到正方形是一个物理体,因此随着精灵的增加,物理体也必须增加。

2 个答案:

答案 0 :(得分:2)

您想要做的是使用SKAction.scaleXTo来实现您的目标:

SKAction.scaleXTo(sceneWidth / spriteWidth, duration: 1).  

现在,如果您希望左侧和右侧不均匀缩放,而是同时到达两个边缘,您可以做的是更改定位点。

这背后的数学假设您的原始锚点是(0.5,0.5)

sprite.anchorPoint = CGPointMake(sprite.position.x / scene.width,sprite.anchorPoint.y)

E.G。场景大小宽度为100,精灵为x 75

这基本上是说你的精灵在场景的某个百分比,例如75%。因此,通过将锚点更改为.75,当您扩展宽度时,左侧将比右侧填充更快,因为锚点的左侧具有75%的宽度,右侧边有25%的宽度。

假设我们将比例设置为2,这意味着锚点的左侧现在将为150%,而右侧将为50%。

答案 1 :(得分:0)

一般情况下,如果将start_x设置为原始x,则假设对象的原点位于左上角(或至少左侧,因为我们只在一个轴上更改内容)您的方块的位置,start_width到其宽度,target_x到条带的x位置,target_width到它的宽度,然后:

x = start_x + (target_x - start_x) * a;

width = start_width + (target_width - start_width) * a;

a从0.0变为1.0时,xwidth将增长以匹配条带。

希望这有帮助。