Iphone 来自另一层cocos2d的ccmenuitem

Iphone 来自另一层cocos2d的ccmenuitem,iphone,objective-c,ios,ios5,cocos2d-iphone,Iphone,Objective C,Ios,Ios5,Cocos2d Iphone,我在cocos2d论坛上看到过一个从不同层访问精灵的论坛,但是尝试过了,结果不起作用;也许我没有做我应该做的事情 对于场景方法,我有: +(CCScene *)scene { CCScene *scene = [CCScene node]; CurrentLayer *_currentLayer = [CurrentLayer node]; aLayer *_aLayer = [aLayer node]; [scene addChild: _currentLay

我在cocos2d论坛上看到过一个从不同层访问精灵的论坛,但是尝试过了,结果不起作用;也许我没有做我应该做的事情

对于场景方法,我有:

+(CCScene *)scene {

    CCScene *scene = [CCScene node];
    CurrentLayer *_currentLayer = [CurrentLayer node];
    aLayer *_aLayer = [aLayer node];
    [scene addChild: _currentLayer z:0 tag: 128];
    [scene addChild: _aLayer z:1 tag:288];

return scene;

}
我试图从
CurrentLayer
中的
aLayer
访问
CCMenuItem
,方法如下:

    CCMenuItem *menuItemToBeAccessed = (CCMenuItem *)[[[self parent] getChildByTag:288] getChildByTag:60];
在aLayer中,我以以下方式放置了我的
CCMenuItem

        menuItem = [[CCMenuItemSprite
                     itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"menuItemImage.png"]
                     selectedSprite:[CCSprite spriteWithSpriteFrameName:@"menuItemImage.png"]
                     target:self
                     selector:@selector(methodToBeCalled:)] retain];
        // the reason that I'm keeping my menu item disabled is that I want to enable when I press another ccmenuitem in the other layer
        menuItem.isEnabled = NO;
        menuItem.tag = kMenuItem; // which is added in enum as:  kMenuItem = 60
        [menuItem setAnchorPoint: ccp(0,0)];
        menuObject = [CCMenu menuWithItems:menuItem, nil];
        [menuObject setPosition: ccp(menuObject_X, menuObject_Y)];
        [self addChild:menuObject z:5];
我的
CCMenuItem
的路径是什么样子的

更新:

GamePlay->ParallaxLayers->aLayer
     access bLayer from aLayer
你指给我看:

CCMenuItem *bCCMenuItem = (CCMenuItem *)[(CCMenu *)[[self.parent getChildByTag:kLayerTag] getChildByTag:kMenuTag] getChildByTag:kMenuItemTag];


GamePlay->ParallaxLayers->bLayer
     access aLayer from bLayer

尽管您试图从另一层访问菜单项的方式存在任何事实,但您缺少一个事实,即您的CCMenuItem是您的CCMenu的子项

您需要访问CCMenu,然后通过标记访问它的子CCMenuItem

比如:

CCMenuItem *toBeAccessed = (CCMenuItem *)[(CCMenu *)[[self.parent getChildByTag:kLayerTag] getChildByTag:kMenuTag] getChildByTag:kMenuItemTag];

谢谢您的回答,但仍然不起作用,我已将toBeAccessed
CCMenuItem
输出到
CCLOG
及其
(null)
;有什么线索吗?试着记录每一步,看看它在哪里变为零。在第一次之后,每一次都是一样的。CCMenuItem作为CCMenu的子项是肯定的,只需确保您在每一步都获得了正确的项即可。父级->层->菜单->项一个奇怪的事情是,当我像这样输出父级:
CCLOG(@“%@,[self-parent]),它给了我:
CCParallaxNode=0181A050 | Tag=1
(因为我的图层被添加到一个视差节点上),而
parallaxNode
被添加到
parallaxLayers
CCLayer,而
parallaxLayers
CCLayer被添加到游戏层。获取菜单项是相对于我试图获取菜单项的图层还是相对于根图层?您需要向上移动,直到到达CCMenu的父级。现在唯一能确定的就是你。一旦你达到了这个目标,只要按照我在回答中写的去做,你就应该能够达到这个目标。