1

我对 Xcode(或一般的 Objective-c)编码很陌生,我似乎无法摆脱这些错误:

  //
    //  HelloWorldLayer.m
    //  FirstGame
    //
    //  Created by Kostas on 1/14/12.
    //  Copyright __MyCompanyName__ 2012. All rights reserved.
    //


    // Import the interfaces
    #import "HelloWorldLayer.h"
    #import "GamePlay.h"

    // HelloWorldLayer implementation
    @implementation HelloWorldLayer
    +(id) scene {

        CCScene *scene = [CCScene node];

        HelloWorldLayer *layer = [HelloWorldLayer node];
        // add layer as a child to scene
        [scene addChild: layer];
        // return the scene
        return scene;
    }

    // on "init" you need to initialize your instance

    -(id) init {

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

            [CCMenuItemFont setFontName:@"Marker Felt"];
            [CCMenuItemFont setFontSize:35];
            CCMenuItem *Play = [CCMenuItemFont itemFromString:@"PLAY"
                                target:self
                                selector:@selector(gotoGameplay:)];

            CCMenu *menu = [CCMenu menuWithItems: Play, nil];
            menu.position = ccp(240, 160);
            [menu alignItemsVerticallyWithPadding:10];
            [self addChild:menu];
        }

        return self;
    }

    -(void) goToGameplay: (id) sender {

        [[CCDirector sharedDirector] 
               replaceScene:[[CCTransitionFade 
                    transitionWithDuration:1 
                    scene:[GamePlay node]
                              ]];   **<-----Here is my error it says "Expected identifier"**
    }


    - (void) dealloc {


        [super dealloc];
    }
    @end

预期的标识符正是 X-Code 提出的。

4

3 回答 3

1

如果计算括号,您会发现左括号比右括号多两个。我在这里缩进了它们,以便您可以清楚地看到问题。

-(void) goToGameplay: (id) sender {
    [
      [CCDirector sharedDirector] 
      replaceScene:
      [ // <-- either this is extra
        [CCTransitionFade transitionWithDuration:1
                                           scene:[GamePlay node]
        ]
      ];
  //];   <-- or this is missing
}

编译器试图告诉您它不希望在消息发送表达式的中间找到分号。我对 Cocos2D 框架不够熟悉,无法知道您到底想要做什么,但至少您可以看到问题所在。

于 2012-10-27T05:04:49.487 回答
0

这一行:

[[CCDirector sharedDirector] 
           replaceScene:[[CCTransitionFade 
                transitionWithDuration:1 
                scene:[GamePlay node]
                          ]];

有 5 个左括号,只有 4 个右括号。需要有相同的数字(并且在正确的位置)。很可能您需要去掉 . 之后的两个左括号之一replaceScene:

顺便说一句 - 你为什么使用这样和旧的 Xcode?您应该使用最新的 - 4.5.1。

于 2012-10-27T05:01:17.680 回答
0

改变

[[CCDirector sharedDirector] 
               replaceScene:[[CCTransitionFade 
                    transitionWithDuration:1 
                    scene:[GamePlay node]
                              ]];

至,

[[CCDirector sharedDirector] replaceScene:
        [CCTransitionFade transitionWithDuration:1
                                           scene:[GamePlay node]]];

那应该可以解决问题。[你之前有一个额外的[CCTransitionFade transitionWithDuration:1 scene:[GamePlay node]]

于 2012-10-27T05:12:48.033 回答