Sprite Kit无法在64位模拟器中运行

时间:2013-12-02 11:16:36

标签: ios sprite-kit

首次使用SpriteKit制作动画。动画一组熊步行图像 - 非常基本。然而,虽然应用程序在32位模式模拟器中运行良好,但在64位模拟器中运行时会出现乱码。

这是ViewController -

// CPViewController.h

@interface CPViewController : UIViewController

@end

// CPViewController.m

@implementation CPViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;
    SKScene * scene = [CPMyScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    [skView presentScene:scene];
}

@end

// CPMyScene.h

@interface CPMyScene : SKScene

@end

// CPMyScene.m

@implementation CPMyScene {
    SKSpriteNode *_bear;
    NSArray *_bearWalkingFrames;
}

-(id)initWithSize:(CGSize)size {    
    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        self.backgroundColor = [SKColor blackColor];
        NSMutableArray *bearWalkingFrames = [NSMutableArray array];
        SKTextureAtlas *bearAtlas = [SKTextureAtlas atlasNamed:@"BearImages"];
        NSUInteger frameCount = bearAtlas.textureNames.count;
        for (int i=1 ; i<=frameCount ; i++) {
            NSString *frameImageName = [NSString stringWithFormat:@"bear%d",i];
            SKTexture *frameImage = [bearAtlas textureNamed:frameImageName];
            [bearWalkingFrames addObject:frameImage];
        }
        _bearWalkingFrames = bearWalkingFrames;
        SKTexture *firstFrame = _bearWalkingFrames[0];
        _bear = [SKSpriteNode spriteNodeWithTexture:firstFrame];
        _bear.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
        [self addChild:_bear];
        [self startWalkingTheBear];
    }
    return self;
}

-(void) startWalkingTheBear {
    [_bear runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:_bearWalkingFrames timePerFrame:0.1f resize:NO restore:YES]] withKey:@"WalkingBear"];
}

@end

图像为233 x 145像素。

以下是32位模式下的模拟器中的视频 -

http://youtu.be/fqJzS-XN0tk

这是64位模式下的模拟器中的视频(不工作 - 图像边界错误或其他) -

http://youtu.be/Kby9aP4gSzg

参考文献:

http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases - 代码主要是来自这里,除了为iPhone和iPad而不是iPad定制。

1 个答案:

答案 0 :(得分:0)

解决了它。我不得不将@ 2x图像添加到图像atlas文件夹中。 @ 2x图像的大小不是非2x图像的两倍,而只是非@ 2x图像的副本,只是用@ 2x重命名。这真的很有趣。