SpriteKit animateWithTextures 不适用于纹理图集

Posted

技术标签:

【中文标题】SpriteKit animateWithTextures 不适用于纹理图集【英文标题】:SpriteKit animateWithTextures not work with texture atlas 【发布时间】:2013-10-08 10:05:43 【问题描述】:

当我不使用纹理图集时,一切正常。但是当我使用纹理图集时,animateWithTextures 不起作用并且什么都没有出现。 这是我的代码

SKTexture *spaceshipTexture = [SKTexture textureWithImageNamed:@"monkey.png"];
SKSpriteNode *spaceship = [SKSpriteNode spriteNodeWithTexture:spaceshipTexture];
spaceship.position = CGPointMake(0,0);
spaceship.anchorPoint = CGPointMake(0,0);
[self addChild: spaceship];

NSMutableArray *images=[NSMutableArray arrayWithCapacity:14];
for (int i=1; i<=14; i++) 
    NSString *fileName=[NSString stringWithFormat:@"%dShuGuangx.png",i];
    SKTexture *tempTexture=[SKTexture textureWithImageNamed:fileName];
    [images addObject:tempTexture];

NSLog(@"count %d",images.count);
SKAction *walkAnimation = [SKAction animateWithTextures:images timePerFrame:0.1];
[spaceship runAction:walkAnimation];

【问题讨论】:

你看过这里吗:***.com/questions/19159537/… 和这里raywenderlich.com/45152/… @Smick 谢谢。我在那里找到了答案。 【参考方案1】:
[SKTexture preloadTextures:images withCompletionHandler:^(void)
        [spaceship runAction:walkAnimation];
    ];

这解决了我的问题。

【讨论】:

这对我也有帮助。在我预加载纹理之前,runAction() 导致应用程序因 EXE_BAD_ACCESS 而崩溃。谢谢! 我遇到了 repeatActionForever: 的问题,导致崩溃,这解决了它。

以上是关于SpriteKit animateWithTextures 不适用于纹理图集的主要内容,如果未能解决你的问题,请参考以下文章

Spritekit - 屏幕坐标的底部

SpriteKit - 暂停输入

SpriteKit 暂停和恢复 SKView

CAShapeLayer 和 SpriteKit

SpriteKit - 生成随机节点

SpriteKit 丢失纹理