ios / cocos2d как заставить пункт меню исчезнуть после активации? - PullRequest
0 голосов
/ 21 февраля 2012

я новичок здесь :) мой первый вопрос: я пытаюсь сделать простое взаимодействие, - после нажатия на пункт меню, я запускаю анимацию спрайт-листа. Похоже, я не могу прямо анимировать пункт меню с помощью спрайт-листа (но я думаю, что вы были бы правы) также я не могу сделать -

menuItem.visible =false:

в функции, которая активируется этой кнопкой также я не могу перезаписать пункт меню в z: -10

вот мой код: .h:

CCSprite *p1S2;
CCAction *p1A2;

.m:

@interface FirstPage ()
@property (nonatomic, retain) CCAction *p1A2;
@property (nonatomic, retain)  CCSprite *p1S2;

@end

@implementation FirstPage
@synthesize p1S2 = _p1S2;
@synthesize p1A2 = _p1A2;

- (id)init
{
    if ((self = [super init]))
    {

        CGSize screenSize = [[CCDirector sharedDirector] winSize];
        bg1 = [CCSprite spriteWithFile:@"st_01_bg1.png"];
        bg1.position = ccp(screenSize.width/2, 512);
        [self addChild:bg1];
        bg2 = [CCSprite spriteWithFile:@"st_01_bg2.png"];
        bg2.position = ccp(screenSize.width/2, 128);
        [self addChild:bg2 ];

 [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:
         @"button.plist"];
        CCSpriteBatchNode *spriteSheet2 = [CCSpriteBatchNode 
                                               batchNodeWithFile:@"button.png"];
            [self addChild:spriteSheet2 z:6];
            NSMutableArray *AnimFrames2 = [NSMutableArray array];

            for(int i = 1; i <= 30; ++i) {
                [AnimFrames2 addObject:
                 [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
                  [NSString stringWithFormat:@"button%d.png", i]]];

            }
    CCAnimation *becomeAnim2 = [CCAnimation animationWithFrames:AnimFrames2 delay:0.04f];

            self.p1S2 = [CCSprite spriteWithSpriteFrameName:@"rostok1.png"];        
           _p1S2.position = ccp(638,530);

            self.p1A2=[CCSequence actions:[CCRepeat actionWithAction:[CCAnimate actionWithAnimation:becomeAnim2 restoreOriginalFrame:NO]times:200],nil];
            [spriteSheet2 addChild:_p1S2 z:6];
            [_p1S2 runAction:_p1A2];
            _p1S2.visible=false;

    CCMenuItem *menuItem1 = [CCMenuItemImage itemFromNormalImage:@"knopka_01_lisik.png" 
                                                           selectedImage:@"knopka_02_lisik.png" target:self selector:@selector(button1Tapped:)];

            CCMenu *Menu = [CCMenu menuWithItems:menuItem1, nil];
            Menu.position = ccp(638,530);        
            [Menu alignItemsHorizontally];
            [self addChild:Menu z:7];
        }
    return self;
}
- (void)button1Tapped:(id)sender {
 _p1S2.visible = true;
           }

} 
@end

какие-нибудь советы, как это сделать правильно?

1 Ответ

0 голосов
/ 25 февраля 2012

То, что вы делаете, использует изображение для вашего пункта меню. Вместо этого изображения вы можете использовать разные вещи, такие как метки или sprites . Попробуйте это:

        CCMenuItemSprite *sprite1 = [CCMenuItemSprite itemFromNormalSprite:@"Your Sprite.png" selectedSprite:@"YourSelectedSrite.png" target:self selector:@selector(animation)];

У вас есть ваш спрайт по умолчанию, затем, когда он выбран, ваш выбранный спрайт, затем цель (обычно сам), а затем селектор. Именно в этот селектор вам нужно вставить код анимации и любой другой код, который вы хотите.

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