Objective c 如何让CCMenuItemSprite选择器调用其他层void?

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]

当我在同一个.m文件中调用void时,下面的代码非常有效,但我希望我的选择器转到场景中的第二层,以获取其“MoveUpSelected”void(其中包含精灵移动的动作)。我该怎么做

HUDLayer.m我的层中与其他层通信的按钮代码

    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)];