Objective c cocos2d的HUD教程
我已经试着遵循这个教程(http://www.raywenderlich.com/4666/how-to-create-a-hud-layer-with-cocos2d)然而,正如你可能知道的那样,我并没有使用与他们相同的教程,而是使用几乎相同的设置。我相信我已经一步一步地跟着它走了。但是我得到了错误(箭头所示的位置:gameLayer.h:(我取出了大部分不必要的东西) 然后在Objective c cocos2d的HUD教程,objective-c,xcode,cocos2d-iphone,Objective C,Xcode,Cocos2d Iphone,我已经试着遵循这个教程(http://www.raywenderlich.com/4666/how-to-create-a-hud-layer-with-cocos2d)然而,正如你可能知道的那样,我并没有使用与他们相同的教程,而是使用几乎相同的设置。我相信我已经一步一步地跟着它走了。但是我得到了错误(箭头所示的位置:gameLayer.h:(我取出了大部分不必要的东西) 然后在init中 //HUD Layer setup HudLayer = [[[CCLayer allo
init
中
//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
然后我得到两个Apple Mach-O链接器错误…架构i386的未定义符号:“\u OBJC\u CLASS\u$\ u gameDataParser”,引用自settingsMenu中的:OBJC CLASS ref。O ld:symbol未找到架构i386 clang:error:linker命令失败,退出代码为1(使用-v查看调用)最奇怪的是,xCode是一种将at识别为类的方法,因为它将其涂成蓝色,但一旦我编译它就会抛出这些错误:/嗯,我不太清楚为什么你不把
\u设置成一个CCLayer。我的意思是如果它是HUD类型的设置。因为这是教程所说的;)我不是cocos2d方面的专家。。。然而,我的船在这里。但让我来告诉你我是如何实现我的HUD的。
// 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
#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
#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;
}
// GameLayer.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface GameLayer : CCLayer {
CCLayer *HudLayer;
}
@property (nonatomic, retain) CCLayer *HudLayer;
+(id)scene;
@end
@synthesize HudLayer;
//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