2012-10-07 38 views
0

我試過按照這個教程(http://www.raywenderlich.com/4666/how-to-create-a-hud-layer-with-cocos2d)但是你可能會告訴我我沒有用這個教程來做與他們相同的事情,而是爲了一個幾乎相同的設置。我相信我一直在跟着它。但是我得到的誤差(由箭頭示出的位置:< ----) '未知類型名稱 'settingsMenu'' 和 '分別預期類型':HUD教程爲cocos2d

mainMenu.h:

// mainMenu.h 


#import <Foundation/Foundation.h> 
#import "cocos2d.h" 
#import "Constants.h" 
#import "SceneManager.h" 
#import "settingsMenu.h" 



@interface mainMenu : CCLayer { 
    settingsMenu * _settings; <---- 
} 

@property (nonatomic, assign) BOOL iPad; 

+ (id)scene; 
- (id)initWithsettingsMenu:(settingsMenu *)settings; <---- 

@end 

MAINMENU。米:

// mainMenu.m 

#import "mainMenu.h" 
#import "gameData.h" 
#import "gameDataParser.h" 
#import "SimpleAudioEngine.h" 
#import "settingsMenu.h" 

@implementation mainMenu 

@synthesize iPad; 

+ (id)scene { 
    CCScene *scene = [CCScene node]; 
    settingsMenu *settings = [settingsMenu node]; 
    [scene addChild:settings z:1]; 
    mainMenu *menuLayer = [[[mainMenu alloc] initWithsettingsMenu:settings] autorelease]; 
    [scene addChild:menuLayer]; 

    return scene; 
} 

settingsMenu.h:

// settingsMenu.h 

#import <Foundation/Foundation.h> 
#import "cocos2d.h" 
#import "Constants.h" 
#import "SceneManager.h" 

@interface settingsMenu: CCLayer { 
    CCMenuItem *_musicOn; 
    CCMenuItem *_musicOff; 
    CCMenuItem *_invertControlsOn; 
    CCMenuItem *_invertControlsOff; 
} 

@property (nonatomic, assign) BOOL iPad; 
@property (nonatomic, assign) BOOL settings; 

@end 

settingsMenu.m:

// settingsMenu.m 


#import "settingsMenu.h" 
#import "gameData.h" 
#import "gameDataParser.h" 
#import "SimpleAudioEngine.h" 
#import "mainMenu.h" 


@implementation settingsMenu 

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

     // Determine Screen Size 
     CGSize screenSize = [CCDirector sharedDirector].winSize; 

     self.iPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; 

     if (self.iPad){ 
      CCSprite *background = [CCSprite spriteWithFile:@"settingsiPad.png"]; 
      background.position = ccp(screenSize.width/2, screenSize.height/2); 
      [self addChild:background]; 
     } 

     else if (screenSize.height > 490){ 
      CCSprite *background = [CCSprite spriteWithFile:@"settingsiPhoneFive.png"]; 
      background.position = ccp(screenSize.width/2, screenSize.height/2); 
      [self addChild:background]; 
     } 

     else{ 
      CCSprite *background = [CCSprite spriteWithFile:@"settingsiPhone.png"]; 
      background.position = ccp(screenSize.width/2, screenSize.height/2); 
      [self addChild:background]; 
     } 
    [self addButtons]; 

    } 
    return self; 
} 

感謝您的時間!我不認爲有必要發佈任何更多的代碼,但如果有其他地方可能導致這個問題,請讓我知道,我會張貼代碼。

回答

1

的gameLayer .H:在.M你

@synthesize HudLayer; 

然後在init(我拿出大部分不必要的東西)

// GameLayer.h 

#import <Foundation/Foundation.h> 
#import "cocos2d.h" 

@interface GameLayer : CCLayer { 
    CCLayer *HudLayer; 
} 
@property (nonatomic, retain) CCLayer *HudLayer; 

+(id)scene; 
@end 

然後,

//HUD Layer setup 

     HudLayer = [[[CCLayer alloc] init] autorelease]; 
     [self addChild:HudLayer]; 
      //add stuff in the HUD here... 


     CCMenuItem *Mainmenu = [[[CCMenuItemFont itemWithString:@"Main Menu" target:self selector:@selector(MainMenu:)] retain]autorelease]; 

     Mainmenu.position = ccp(size.width /2-Mainmenu.rect.size.width,size.height /2-Mainmenu.rect.size.height); 
     CCMenu *Hudmenu = [CCMenu menuWithItems: Mainmenu, nil]; 
     [HudLayer addChild:Hudmenu]; 
    //End HUD Layer setup 
+0

然後我得到兩個Apple Mach-O鏈接器錯誤... 體系結構i386的未定義符號: 「_OBJC_CLASS _ $ _ gameDataParser」,引用自: 設置菜單中的objc-class-ref ld:未找到體系結構的符號i386 clang:錯誤:鏈接器命令失敗,退出代碼1 (使用-v來查看調用) – simonthumper

+0

最奇怪的部分是xCode是一種識別類,因爲它着色它藍色,但只要我編譯它拋出了這些錯誤:/ – simonthumper

+0

嗯,我不太清楚你爲什麼不要只有'_settings'成爲CCLayer。我的意思是如果它是一個HUD類型的設置。 – stenger96