2013-12-02 1 views
1

Использование SpriteKit для анимации в первый раз. Анимация набора изображений для ходьбы медведя - очень простая. Однако, несмотря на то, что приложение хорошо работает в 32-битном симуляторе, оно искажается при работе в 64-битном симуляторе.Sprite Kit не работает в 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 px.

Вот видео в тренажере в 32-битном режиме -

http://youtu.be/fqJzS-XN0tk

Вот видео в тренажере в 64-битном режиме (не работает - IMAGE ГРАНИЦЫ НЕПРАВИЛЬНО или что-то) -

http://youtu.be/Kby9aP4gSzg

Ссылки:

http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases - код в основном отсюда, кроме как для iPhone и iPad, а не только для iPad.

+0

У меня была аналогичная проблема с SpriteKit, не работающим на 64bit/iPhone5S. SKScene просто появился как серый экран. Оказалось, что @property «сильный» решил проблему! –

+0

Где вы выразились @DavidDouglas – Muymuy1

ответ

0

Решено. Мне пришлось добавить @ 2x изображения в папку атласа изображений. Изображения @ 2x не в два раза больше изображений не @ 2x, а просто копия изображений не @ 2x и просто переименована в @ 2x. Это действительно забавно.