gpt4 book ai didi

ios - Cocos2d : call selector in selected method of CCMenuItem

转载 作者:行者123 更新时间:2023-11-28 22:49:26 25 4
gpt4 key购买 nike

我想在调用 CCMenuItemSprite 的“selected”方法时调用目标选择器(见下文:buttonPressedWithId:)。

 CCMenuItemSprite *buttonB = [CCMenuItemSprite itemWithNormalSprite:[CCSprite spriteWithSpriteFrameName:@"emptyCircle.png"] selectedSprite:[CCSprite spriteWithSpriteFrameName:@"greenCircle.png"] target:self  selector:@selector(buttonPressedWithId:)];

我研究了 CCMenuItemSprite 的实现并发现了这个:

-(void) selected
{
[super selected];
//HERE IS WHERE I WANT TO CALL buttonPressedWithId:
if( selectedImage_ ) {
[normalImage_ setVisible:NO];
[selectedImage_ setVisible:YES];
[disabledImage_ setVisible:NO];

} else { // there is not selected image

[normalImage_ setVisible:YES];
[selectedImage_ setVisible:NO];
[disabledImage_ setVisible:NO];
}
}

目标是在所选方法中调用目标选择器。所以我查看了 initWithNormalSprite 方法并发现:

-(id) initWithNormalSprite:(CCNode<CCRGBAProtocol>*)normalSprite selectedSprite:(CCNode<CCRGBAProtocol>*)selectedSprite disabledSprite:(CCNode<CCRGBAProtocol>*)disabledSprite target:(id)target selector:(SEL)selector
{
// avoid retain cycle
__block id t = target;

return [self initWithNormalSprite:normalSprite selectedSprite:selectedSprite disabledSprite:disabledSprite block:^(id sender) {
[t performSelector:selector withObject:sender];
} ];
}

我想我有办法调用 _block 函数,但我没有看到一个很好的例子来理解如何调用。我也不太清楚 *_block* 是什么:(。

现在,我应该继承 CCMenuItemSprite 并改变这种行为吗?如果是这样,我该如何调用目标选择器?

提前致谢:)

最佳答案

CCMenuItemSprite 的父类(super class) - CCMenuItem 中有 -activate 方法。所以如果你愿意,你可以子类化 CCMenuItemSprite 并让它的 -selected 方法看起来像这样:

-(void) selected
{
[super selected];
[self activate];
}

也可以看看-activate的代码,很简单:)

关于ios - Cocos2d : call selector in selected method of CCMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12308218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com