2015-01-12 2 views
0

스프라이트 키트 엔진을 사용하고 있습니다. initWithSize에 코드를 작성했지만 업데이트 이후에 initWithSize이 자동으로 호출되지 않고 대신 viewDidLoad이 호출됩니다. 내가 대신 initWithSize의, initWithCoder이 사용했다는 것을 알고있어, 그래서 난의 코드를 변경 :Xcode 6에서 initWithCoder가 예상대로 작동하지 않습니까?

-(id) initWithSize:(CGSize)size { 

    if (self = [super initWithSize:size]) { 
     self.backgroundColor = [SKColor blueColor]; 
     SKSpriteNode *paddle = [SKSpriteNode spriteNodeWithImageNamed:@"paddle"]; 
     paddle.position = CGPointMake(150, 100); 
     paddle.physicsBody.dynamic = NO; 

     [self addChild:paddle]; 
    } 

    return self; 
} 

에 :

-(instancetype)initWithCoder:(NSCoder *)aDecoder { 

    self = [super initWithCoder:aDecoder]; 

    if (self) { 
     self.backgroundColor = [SKColor blueColor]; 
     SKSpriteNode *paddle = [SKSpriteNode spriteNodeWithImageNamed:@"paddle"]; 
     paddle.position = CGPointMake(150, 100); 
     paddle.physicsBody.dynamic = NO; 

     [self addChild:paddle]; 
    } 

    return self; 
} 

자, 장면의 색상이 파란색으로 변합니다,하지만 난 장면에 스프라이트를 추가 할 수 없습니다. 건물 도중 오류가 발생하지 않습니다.

initWithCoder에 몇 가지 변경 사항이 있습니까? (예인 경우 구체적으로 기재하십시오)

initWithCoderinitWithSize에서 사용한 코드와 정확히 일치합니까?

추 신 : GameScene.m에있는 전체 코드를 보여주고 다른 장면이 없습니다.

#import "GameScene.h" 

@implementation GameScene 

-(void)didMoveToView:(SKView *)view { 

/* Setup your scene here */ 

} 

-(instancetype)initWithCoder:(NSCoder *)aDecoder { 

    self = [super initWithCoder:aDecoder]; 

    if (self) { 

     SKSpriteNode *paddle = [SKSpriteNode spriteNodeWithImageNamed:@"paddle"]; 

     paddle.position = CGPointMake(150, 100); 

     paddle.physicsBody.dynamic = NO; 

     [self addChild:paddle]; 



    } 

    return self; 

} 

-(void)update:(CFTimeInterval)currentTime { 

/* Called before each frame is rendered */ 

} 

@end 

그리고 initWithSize의 코드를 복사하여 initWithCoder에 붙여 넣었습니다. 외륜 개체를 만드는 것 같지 않습니다.

도와주세요!

+0

그렇지 않으면 우리는 내가 프로젝트로 가져온 이미지에서 스프라이트 만들려면 다음 코드를 사용하고이 – LearnCocos2D

+0

라고 가져 오지 왜 당신에게 말할 수없는, 스프라이트를 생성하는 코드를 게시 : SKSpriteNode * 패를 = [SKSpriteNode spriteNodeWithImageNamed : @ "패들"]; paddle.position = CGPointMake (150, 100); paddle.physicsBody.dynamic = NO; [self addChild : paddle]; –

+0

skspritenode에는 initWithSize 이니셜 라이저가 없습니다. SKScene – LearnCocos2D

답변

0

메소드 서명 불일치 일 수 있습니까? 대신 instancetype의

가 같이 정의된다 : 내 키가 코딩 구현의 인스턴스 유형의 형태의 안전성을 가지고 질문을 찾을 수 있다면 - (id)initWithCoder:(NSCoder *)decoder

나는 그냥보고 있었다.

다른 말로하면됩니다. 그것은 시험할만한 가치가있을 것입니다. Why does initWithCoder not return instancetype?

관련 문제