SKSprite动画中的白框

时间:2015-09-02 23:42:28

标签: ios swift animation sprite-kit

我在单个纹理图集中拥有所有动画。到目前为止动画效果很好,但我使用的是repeatActionForever。我尝试为一次性动画创建一个简单的序列,我第一次运行动画时看到一个奇怪的故障。动画的最后一帧是完全白色的(不是缺失图像数据的X)。代码,

mysql> SELECT ROUND(dx,5), ROUND(dx,9) FROM `dec184` WHERE d = 1.2346;
+-------------+-------------+
| ROUND(dx,5) | ROUND(dx,9) |
+-------------+-------------+
|     1.23460 | 1.234599948 |
+-------------+-------------+

在创建对象时,frames0和frames1将实例化一次。 第一次运行此函数时,anim0和anim1之间总是有一个白框。如果我将anim1替换为waitForDuration(1),我可以看到白色正方形1秒。

第二次调用该函数时,没有任何故障。 如果我在相同的帧上使用repeatActionForever,我也看不到任何故障。

它发生在模拟器和真实设备中,它始终在创建对象后的第一个调用中。

知道可能是什么原因?

1 个答案:

答案 0 :(得分:1)

糟糕... 我看到的是在加载任何纹理之前的精灵的初始状态。

来自animateWithTextures的文档:

  

恢复:当动作完成时,精灵的纹理将恢复到动作完成之前的纹理。 (如果resize参数为YES,则调整sprite的大小以匹配原始纹理的大小。)

这意味着我第一次运行它时,精灵被“恢复”到最初的白色方块(不知道为什么这是原始状态......也许透明的精灵会更好?)

我将恢复更改为false并解决了问题:)

        let anim0 = SKAction.animateWithTextures(frames0,
            timePerFrame: 0.2,
            resize: false,
            restore: false)

无论如何,我没有正确阅读文档而感到尴尬...... ^^;