В моем маленьком проекте я использую CCMenu
, у него есть три кнопки. Мне нужно, чтобы эти кнопки продолжали запускать, если они обнаруживают прикосновение, и, поскольку это не нормальное поведение, я решил подклассифицировать CCMenuItem
и переопределить несколько методов.Подкласс Cocos2D MenuItem с Objective-C
Два метода Я хочу переопределить, являются:
-(void) selected
{
// subclass to change the default action
if(isEnabled_) {
[super selected];
[self stopActionByTag:kZoomActionTag];
originalScale_ = self.scale;
CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:originalScale_ * 1.2f];
zoomAction.tag = kZoomActionTag;
[self runAction:zoomAction];
}
}
-(void) unselected
{
// subclass to change the default action
if(isEnabled_) {
[super unselected];
[self stopActionByTag:kZoomActionTag];
CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:originalScale_];
zoomAction.tag = kZoomActionTag;
[self runAction:zoomAction];
}
}
Так что в моем подклассу я просто дублируя их точно, но заменить код внутри с новой функциональностью. Для простоты, мы будем говорить:
-(void) selected
{
//turn a sprite around
mySprite.rotation = 0;
}
-(void) unselected
{
//turn a sprite around
mySprite.rotation = 180;
}
Теперь MySprite будет объявлена в заголовке основного кода тела, который импортируется в этот подкласс.
Проблема: mySprite не видно, он получает ошибку undeclared
. Вместо mySprite
следует использовать [super selected]
? Я пробовал это, я получаю ту же ошибку.
Спасибо.