Отключение взаимодействия с пользователем на CCSprite или CCScene в cocos2d для Iphone - PullRequest
1 голос
/ 03 октября 2010

Я разрабатываю игру на Iphone, используя cocos2d. У меня есть CClayer, содержащий 20 CCSprite. Я играю звук и хочу отключить сенсорные события на всем CCSprite или на всем слое во время воспроизведения звука. Я посмотрел на свойство CCLayer с именем isTouchEnabled, но поведение не распространяется на детей (все CCSprite). Если это не задокументировано, похоже, что CCsprite не имеет эквивалентного свойства. Кто-нибудь знает легкий путь к этому? Спасибо

Ответы [ 2 ]

2 голосов
/ 17 июля 2013

Я использую метод ниже, чтобы отключить касание элементов CCMenu в слое ниже в представлении, может помочь вам.

Вызовите метод ниже и отключите все подменю или подузел.

[self MenuStatus: NO Node: self]; // отключить

метод:

-(void)MenuStatus:(BOOL)_enable Node:(id)_node
{
    for (id result in ((CCNode *)_node).children) 
    {
        if ([result isKindOfClass:[CCMenu class]])
        {
            for (id result1 in ((CCMenu *)result).children) 
            {

                if ([result1 isKindOfClass:[CCMenuItem class]]) 
                {
                    ((CCMenuItem *)result1).isEnabled = _enable;

                }
            }
        }
        else
            [self MenuStatus:_enable Node:result];

    }
}

[self MenuStatus:YES Node:self];  // to enable** 
1 голос
/ 05 октября 2010

Член другого форума разместил это решение

То есть все ваши спрайты обычно получают сенсорные события?Если вы знаете, когда воспроизводится звук, вы можете просто попросить их проверить это и проигнорировать касание, если звук воспроизводится.Например, если ваши спрайты реализуют протокол CCTargetedTouchDelegate, вы можете сделать что-то вроде:

- (BOOL)ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event {
    if (soundIsPlaying) {
        return NO; // i.e., the sprite is currently uninterested in the touch
    }
    // Other checks and behaviour here.
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...