【发布时间】:2015-01-04 16:10:39
【问题描述】:
一段时间以来,我一直在用直升机编写游戏,现在我试图为用户提供两个直升机之间的选择。我使用这段代码为原始代码制作动画,没有任何问题:
heliAtlas = [SKTextureAtlas atlasNamed:@"APACHE"];
NSArray *heliAtlasArray = [heliAtlas textureNames];
NSArray *heliAtlasArraySorted = [heliAtlasArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSMutableArray *heliTextures = [NSMutableArray array];
for (NSString *filename in heliAtlasArraySorted) {
SKTexture *texture = [heliAtlas textureNamed:filename];
[heliTextures addObject:texture];
}
SKAction *animateHeli = [SKAction animateWithTextures:heliTextures timePerFrame:.016];
SKAction *repeatAnimation = [SKAction repeatActionForever:animateHeli];
现在,我为第二个直升机使用了完全相同的代码,但是当我尝试使用直升机时,动画看起来有问题。我放慢了动画的速度,我意识到它显示了动画的前半部分,然后通过 atlas 风格的照片进行动画处理(两个并排的螺旋被切成两半或倒置等)。
为什么我的两个地图集表现不同?
【问题讨论】:
-
各个图像是否具有唯一名称?排序数组中有什么(记录它)?排序可能没有考虑自然排序,所以顺序可能是“image1, image10, image2”如果你连续命名的话。
-
@LearnCocos2D 我按照你的要求做了。对于有效的直升机,NSLog 向我展示了该数组按顺序包含图像。对于没有正确包含前几张图像的图像,接下来的图像看起来像 littlebird_frame07@2x 0x1851a8bbdng'
-
名称在第 05 帧之前是正确的。第 06、07 和 08 帧是第 04、03 和 02 帧的重复。也许这就是原因,但是我不知道该怎么办.我的另一架直升机也是这样,但没有出现这个故障。
-
另外,我尝试通过手动输入图像名称来修复它,但是对于帧 06、07 和 08,它显示红色 x,即使我可以在我的项目中清楚地看到它们在地图集文件夹。非常令人沮丧,显然苹果正试图通过缩小图集来“帮助我”,但它实际上是在破坏过程中的图像
-
我在我的应用程序中发现了同样的问题。我最终从图集中删除了图像。
标签: animation sprite-kit skaction