Objective c 如何让CCMenuItemSprite选择器调用其他层void?
当我在同一个.m文件中调用void时,下面的代码非常有效,但我希望我的选择器转到场景中的第二层,以获取其“MoveUpSelected”void(其中包含精灵移动的动作)。我该怎么做 HUDLayer.m我的层中与其他层通信的按钮代码Objective c 如何让CCMenuItemSprite选择器调用其他层void?,objective-c,cocos2d-iphone,kobold2d,Objective C,Cocos2d Iphone,Kobold2d,当我在同一个.m文件中调用void时,下面的代码非常有效,但我希望我的选择器转到场景中的第二层,以获取其“MoveUpSelected”void(其中包含精灵移动的动作)。我该怎么做 HUDLayer.m我的层中与其他层通信的按钮代码 self.dpad = [CCSprite spriteWithFile:@"dpad.png"]; CCSprite *dpadSelectedSprite = [CCSprite spriteWithTexture:[dpad texture]
self.dpad = [CCSprite spriteWithFile:@"dpad.png"];
CCSprite *dpadSelectedSprite = [CCSprite spriteWithTexture:[dpad texture]];
dpadSelectedSprite.color = ccGRAY;
//float dpadHeight = flareSprite.texture.contentSize.height;
CCMenuItemSprite *dpadButtons = [CCMenuItemSprite itemWithNormalSprite:dpad selectedSprite:dpadSelectedSprite target:Level1 selector:@selector(MoveUpSelected)];
dpadButtons.position = CGPointMake(size.width / 2, 150);
[menu addChild:dpadButtons];
Level1.m在我的第二层中无效,等待第一层按钮调用
- (void)MoveUpSelected {
int yPosition = self.Player.position.y;
yPosition += [self.Player texture].contentSize.height/2;
CGSize size = [[CCDirector sharedDirector] winSize];
if (yPosition >= (size.height - [self.Player texture].contentSize.height/2)) {
yPosition = (size.height - [self.Player texture].contentSize.height/2);
}
self.Player.position = CGPointMake(self.Player.position.x, yPosition);
}
我有一个GameScene1.m在单独的文件中保存这两个层
+(id) scene
{
CCScene *scene = [CCScene node];
HudLayer *HUD = [HudLayer node];
[scene addChild:HUD z:2];
Level1 *layer = [Level1 node];
[scene addChild:layer];
return scene;
}
请用几行代码解释。很难理解您想做什么。正如Stephen在评论中提到的,“使用无效”和“无效操作”短语没有任何意义。无论如何,若您只想在btn单击时调用某个实例的方法,只需将其设置为菜单项的目标。就你而言
CCMenuItemSprite *dpadButtons = [CCMenuItemSprite itemWithNormalSprite:dpad selectedSprite:dpadSelectedSprite target:self selector:@selector(MoveUpSelected)];
使用self
作为目标。将其更改为self.parent
或任何其他实例和菜单项将尝试调用此目标上的选择器
编辑:
我在编辑时尝试使用类对象,而不是它的实例作为目标。因此,它无法找到静态方法 “使用无效”或“无效操作”是什么意思?这两种说法都没有道理。您的意思是“调用返回值为void的方法”还是“调用不带参数的方法”?我猜您想知道如何获取对其他节点的引用,在这种情况下,请阅读以下内容:PS:下次不要浪费数周时间(!)尝试解开。当你注意到你在编程中遇到问题时,如果不寻求帮助,你将一事无成我试图理解这些策略中的任何一种,但作为初学者很难学习。我认为他只是想从层的父层/场景调用void方法。但这确实是非常不清楚的。我只是想让一个层得到一个选择器发送到另一个层,它拥有一个空操作。我读到的所有内容都不起作用。我正试图让我的HUD层告诉我的层通过CCmenuItemSpritebe移动玩家,通过使用target来“target”我的另一层我得到以下错误未声明的选择器“MoveUpSelected”,即使我有一个-(void)MoveUpSelected{}在我的目标层中。您是否在该层类的头文件中声明了它?只是在头文件中声明了(代码:-(void)MoveUpSelected;)并使用以下void进行测试,但仍然没有任何内容(代码:-(void)MoveUpSelected{NSLog(@“UpSceneButton”);}),而不是使用target:self.parent是否仍然存在将目标点指向cclayer。从你的评论中我了解到你离编程还有很长的路要走。你甚至不知道最基本和最普通的事情。我没有时间去了解你。至少读一些文献,然后再读一遍我的答案。
CCMenuItemSprite *dpadButtons = [CCMenuItemSprite itemWithNormalSprite:dpad selectedSprite:dpadSelectedSprite target:levelInstance selector:@selector(MoveUpSelected)];