масштабирование CCMenuItem в Cocos2d (Objective-C) - PullRequest
4 голосов
/ 21 июня 2010

Я пытаюсь создать CCMenuItem, который масштабировал изображения.Например, я попытался:

CCSprite* normalSprite = [CCSprite spriteWithFile:@"button_play.png"];
CCSprite* selectedSprite = [CCSprite spriteWithFile:@"button_play.png"];
selectedSprite.scale = 1.2;

CCMenuItem menuItem = [CCMenuItemSprite
                       itemFromNormalSprite:normalSprite
                       selectedSprite:selectedSprite
                       target:self
                       selector:@selector(onPlay:)];

Но похоже, что CCMenuItemSprite игнорирует масштаб основных спрайтов.Есть ли способ сделать это (кроме создания масштабированных версий базовых изображений)?Спасибо.

Ответы [ 3 ]

4 голосов
/ 13 июля 2010

Thyrgle правильно говорит о том, как работает CCMenuItem.

Однако, безусловно, есть способ сделать то, что вы хотите.Все, что вам нужно сделать, это создать подкласс CCMenuItem и переопределить выбранные и невыбранные методы для достижения того, что вы хотите.На самом деле, я уверен, что вы можете просто вырезать и вставить код из CCMenuItemLabel, потому что масштабирование элемента до 1.2 - это именно то, что он делает.(Фактически, это делает это лучше, так как оно оживляет изменение масштаба.)

-(void) selected
{
    // subclass to change the default action
    if(isEnabled_) {    
        [super selected];
        [self stopActionByTag:kZoomActionTag];
        CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale: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:1.0f];
        zoomAction.tag = kZoomActionTag;
        [self runAction:zoomAction];
    }
}
1 голос
/ 26 августа 2011

CCMenuItemImage Class также доступен для отображения изображения с его масштабом в CCMenu. Пожалуйста, проверьте эту ссылку

[mainMenu alignItemsVerticallyWithPadding: 15.0f];

0 голосов
/ 21 июня 2010

Нет, другого пути нет.Дело в том, что menuItem только подтверждает файловую часть спрайтов.Он не смотрит на другие свойства, такие как свойство scale.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...