我在cocos2d论坛上看到过一个从不同层访问精灵的example,但尝试了一下,它不起作用;也许我没有做我应该做的事情
对于场景方法,我有:
+(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发布于 2012-02-03 09:19:24
尽管您试图从另一个层访问菜单项的方式存在一些问题,但您忽略了一个事实,即您的CCMenuItem是您的CCMenu的子项。
您需要访问CCMenu,然后通过标记访问它的子CCMenuItem。
类似于:
CCMenuItem *toBeAccessed = (CCMenuItem *)[(CCMenu *)[[self.parent getChildByTag:kLayerTag] getChildByTag:kMenuTag] getChildByTag:kMenuItemTag];https://stackoverflow.com/questions/9122335
复制相似问题