2013-06-09 3 views
-2

자습서를 읽었으며 코드를 올바르게 구현하는 데 어려움을 겪고 있습니다. 나는 Objective-C에 대한 지식이 거의 없으며, 다른 사용자는 이전에이 단계에서 오류가 있었지만 해결책은 도움이되지 못했습니다. 이 프로젝트의 전체 코드는 문제가 발생한 위치를 포함하여 아래에 게시됩니다.선언되지 않은 식별자 업데이트 사용

환호성.

-(id) init 
{ 
if((self=[super init])) { 

    _batchNode = [CCSpriteBatchNode batchNodeWithFile:@"Sprites.pvr.ccz"]; // 1 
    [self addChild:_batchNode]; // 2 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Sprites.plist"]; // 3 

    _ship = [CCSprite spriteWithSpriteFrameName:@"SpaceFlier_sm_1.png"]; // 4 
    CGSize winSize = [CCDirector sharedDirector].winSize; // 5 
    _ship.position = ccp(winSize.width * 0.1, winSize.height * 0.5); // 6 
    [_batchNode addChild:_ship z:1]; // 7 
    // 1) Create the CCParallaxNode 
    _backgroundNode = [CCParallaxNode node]; 
    [self addChild:_backgroundNode z:-1]; 

    // 2) Create the sprites we'll add to the CCParallaxNode 
    _spacedust1 = [CCSprite spriteWithFile:@"bg_front_spacedust.png"]; 
    _spacedust2 = [CCSprite spriteWithFile:@"bg_front_spacedust.png"]; 
    _planetsunrise = [CCSprite spriteWithFile:@"bg_planetsunrise.png"]; 
    _galaxy = [CCSprite spriteWithFile:@"bg_galaxy.png"]; 
    _spacialanomaly = [CCSprite spriteWithFile:@"bg_spacialanomaly.png"]; 
    _spacialanomaly2 = [CCSprite spriteWithFile:@"bg_spacialanomaly2.png"]; 

    // 3) Determine relative movement speeds for space dust and background 
    CGPoint dustSpeed = ccp(0.1, 0.1); 
    CGPoint bgSpeed = ccp(0.05, 0.05); 

    // 4) Add children to CCParallaxNode 
    [_backgroundNode addChild:_spacedust1 z:0 parallaxRatio:dustSpeed positionOffset:ccp(0,winSize.height/2)]; 
    [_backgroundNode addChild:_spacedust2 z:0 parallaxRatio:dustSpeed positionOffset:ccp(_spacedust1.contentSize.width,winSize.height/2)]; 
    [_backgroundNode addChild:_galaxy z:-1 parallaxRatio:bgSpeed positionOffset:ccp(0,winSize.height * 0.7)]; 
    [_backgroundNode addChild:_planetsunrise z:-1 parallaxRatio:bgSpeed positionOffset:ccp(600,winSize.height * 0)]; 
    [_backgroundNode addChild:_spacialanomaly z:-1 parallaxRatio:bgSpeed positionOffset:ccp(900,winSize.height * 0.3)]; 
    [_backgroundNode addChild:_spacialanomaly2 z:-1 parallaxRatio:bgSpeed positionOffset:ccp(1500,winSize.height * 0.9)]; 
    // Add to end of init method 
    [self scheduleUpdate]; 

    // Add new update method 
    - (void)update:(ccTime)dt{ 

     CGPoint backgroundScrollVel = ccp(-1000, 0); 
     _backgroundNode.position = ccpAdd(_backgroundNode.position, ccpMult(backgroundScrollVel, dt)); 

    } 
    } 
return self; 
} 

오류 상황

// Add to end of init method 
[self scheduleUpdate]; 

// Add new update method 
- (void)update:(ccTime)dt { 

CGPoint backgroundScrollVel = ccp(-1000, 0); 
_backgroundNode.position = ccpAdd(_backgroundNode.position, ccpMult(backgroundScrollVel, dt)); 

} 

당신은 다른 방법 안에 방법을 선언 할 수 없습니다

- (void)update:(ccTime)dt { 

답변

1

Objective-C에서는 메소드 내부에서 메소드의 정의를 제공 할 수 없습니다. 따라서 메소드 update의 정의를 메소드 init 외부에 두어야합니다. 당신의 모두

-(id) init 
{ 
    if((self=[super init])) 
    { 
     //Implementation of init... 
      [self scheduleUpdate]; 
    } 
    return self; 
} 

// Add new update method 
- (void)update:(ccTime)dt 
{ 
    CGPoint backgroundScrollVel = ccp(-1000, 0); 
    _backgroundNode.position = ccpAdd(_backgroundNode.position, ccpMult(backgroundScrollVel, dt)); 
} 
+0

감사합니다, 나는 코드를 삽입하는 방법을 이해하지 못했다이 그것을 해결했다 –

1

오류를 일으키는 라인. 그들은 분리되어야합니다.

관련 문제