首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自另一层cocos2d的ccmenuitem

来自另一层cocos2d的ccmenuitem
EN

Stack Overflow用户
提问于 2012-02-03 08:58:20
回答 1查看 1.1K关注 0票数 0

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

对于场景方法,我有:

代码语言:javascript
复制
+(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,方法是:

代码语言:javascript
复制
    CCMenuItem *menuItemToBeAccessed = (CCMenuItem *)[[[self parent] getChildByTag:288] getChildByTag:60];

在aLayer中,我以这种方式放置了我的CCMenuItem

代码语言:javascript
复制
        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的路径是什么样子的?

更新:

代码语言:javascript
复制
GamePlay->ParallaxLayers->aLayer
     access bLayer from aLayer

你给我指出了:

代码语言:javascript
复制
CCMenuItem *bCCMenuItem = (CCMenuItem *)[(CCMenu *)[[self.parent getChildByTag:kLayerTag] getChildByTag:kMenuTag] getChildByTag:kMenuItemTag];


GamePlay->ParallaxLayers->bLayer
     access aLayer from bLayer
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-03 09:19:24

尽管您试图从另一个层访问菜单项的方式存在一些问题,但您忽略了一个事实,即您的CCMenuItem是您的CCMenu的子项。

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

类似于:

代码语言:javascript
复制
CCMenuItem *toBeAccessed = (CCMenuItem *)[(CCMenu *)[[self.parent getChildByTag:kLayerTag] getChildByTag:kMenuTag] getChildByTag:kMenuItemTag];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9122335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档