我在单个纹理图集中拥有所有动画。到目前为止动画效果很好,但我使用的是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,我也看不到任何故障。
它发生在模拟器和真实设备中,它始终在创建对象后的第一个调用中。
知道可能是什么原因?
答案 0 :(得分:1)
糟糕... 我看到的是在加载任何纹理之前的精灵的初始状态。
来自animateWithTextures的文档:
恢复:当动作完成时,精灵的纹理将恢复到动作完成之前的纹理。 (如果resize参数为YES,则调整sprite的大小以匹配原始纹理的大小。)
这意味着我第一次运行它时,精灵被“恢复”到最初的白色方块(不知道为什么这是原始状态......也许透明的精灵会更好?)
我将恢复更改为false并解决了问题:)
let anim0 = SKAction.animateWithTextures(frames0,
timePerFrame: 0.2,
resize: false,
restore: false)
无论如何,我没有正确阅读文档而感到尴尬...... ^^;