-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 {
4

2 回答 2

1

您不能在其他方法中声明方法。他们必须分开。

于 2013-06-09T05:26:05.160 回答
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));
 }
于 2013-06-09T06:17:09.593 回答