可能重复:
Error “No known class method for selector 'Hello:'” in custom-made framework
我在这里为我的游戏创建一个主菜单 它没有编译,但我不明白为什么
// Main Menu.m
//
//
//
#import "MainMenu.h"
#import "CCTouchDispatcher.h"
#import "Instructions.h"
CCSprite *seeker1;
CCSprite *cocosGuy;
@implementation MainMenu
+ (CCScene *) scene
{
CCScene * scene = [CCScene node]; // scene is an autorelease object
MainMenu * layer = [MainMenu node]; // later is an autorelease object
[scene addChild: layer]; // add layer as a child to scene
return scene; // return the scene
}
- (id) init
{
if ( ( self = [super init] ) )
{
[ self setUpMenus ];
}
return self;
}
- (void) setUpMenus
{
// create menu items
CCMenuItemImage * startButton = [CCMenuItemImage itemFromNormalImage:@"startbutton.png"
selectedImage:@"startbutton_selected.png"
target: self
selector: @selector (doSomethingOne:)];
CCMenuItemImage * instructionsButton = [CCMenuItemImage itemFromNormalImage:@"instructionsbutton.png"
selectedImage:@"instructionbutton_selected.png"
target: self
selector: @selector(doSomethingTwo:)];
CCMenuItemImage * unlockList = [CCMenuItemImage itemFromNormalImage: @"unlocklist.png"
selectedImage:@"unlocklist_selected.png"
target: self
selector: @selector(doSomethingThree:)];
// create the menu and add the items to it
CCMenu * myMenu = [CCMenu menuWithItems: startButton, instructionsButton, unlockList,nil];
// arrange the items vertically
[myMenu alignItemsVertically];
// add the menu to the scene
[self addChild:myMenu];
}
- (void) doSomethingOne: (CCMenuItem *) menuItem
{
}
- (void) doSomethingTwo: (CCMenuItem *) menuItem
{
[[CCDirector sharedDirector] replaceScene:
[CCTransitionFade transitionWithDuration:0.5f scene:[Instructions scene] ]];
}
- (void) doSomethingThree: (CCMenuItem *) menuItem
{
}
@end
为什么我会收到选择器场景中没有已知类方法的错误?关于doSomethingTwo。 我必须在.h文件中导入一些东西吗?还是实施? 感谢您提供的任何帮助。
答案 0 :(得分:1)
Instructions类是否实现了这个选择器?
+(id) scene
{
id scene = [CCScene node];
return scene;
}
指令类的接口是否声明了这个选择器,以便其他类可以引用它?
@interface Instructions : CCLayer
{
}
+(id) scene;
@end
你需要两者。
答案 1 :(得分:0)
您发布的代码+ (CCScene *) scene
是MainMenu
类方法,您从Instructions
调用它,可能没有相同签名的方法。