0
當調用CCMenuItemSprite的「selected」方法時,我想調用目標選擇器(請參閱下面的代碼:buttonPressedWithId:)。Cocos2d:CCMenuItem的選定方法中的調用選擇器
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 *爲:(沒有太大的想法。
現在,我應該sublcass CCMenuItemSprite和改變這種beheaviour? 如果是這樣,我怎麼能叫有針對性的選擇?
謝謝提前:)
好極了,感謝ü非常。完美的作品:) – mm24