Cocos2d iOS: почему мой CCMenuItemImage не реагирует на сенсорные события? - PullRequest
0 голосов
/ 27 ноября 2011

Я создаю новый класс для представления меток на сцене и пытаюсь выяснить, как заставить их реагировать на сенсорные события.Мой код очень прост, но когда я устанавливаю точку останова в селекторе, указанном в методе initFromNormalImage, точка останова никогда не получает удар.Вот мой код ...

файл интерфейса

@interface FBLabel : CCNode {
    CCMenuItemImage *_labelSprite;
    CCLabelBMFont *_info;
}
-(id) initWithLabelFileName: (NSString*) filename andInfo: (NSString*) inInfo;
@property (nonatomic, retain) CCMenuItemImage *labelSprite;
@property (nonatomic, retain) CCLabelBMFont *info;
@end

файл реализации

@implementation FBLabel
@synthesize labelSprite = _labelSprite;
@synthesize info = _info;

-(id) initWithLabelFileName: (NSString*) filename andInfo: (NSString*) inInfo{

    self = [super init];
    if(self){
        _labelSprite = [CCMenuItemImage itemFromNormalImage:filename selectedImage:filename target:self selector:@selector(checkSelectedItem:)];
        if(_labelSprite){
            [self addChild: _labelSprite z:1];
            self.contentSize = _labelSprite.contentSize;
        }
        //_info = [CCLabelBMFont labelWithString:inInfo fntFile:@"AppleLiGothic_Black18.fnt"];
        _info = [CCLabelTTF labelWithString:inInfo fontName:@"Arial" fontSize:16.0];
        if(_info){
            _info.anchorPoint = ccp(0,0.5);
            _info.position = ccp(-80,0);
            [self addChild:_info z:2];
        }
    }
    return self;
}

-(void) dealloc{
    [_labelSprite release];
    [_info release];
    [super dealloc];
}

- (void)checkSelectedItem:(id)sender {  
    //THIS LINE OF CODE NEVER GETS EXECUTED
    CCMenuItemImage *toggleItem = (CCMenuItemImage *)sender;

}
@end

Большое спасибо за вашу мудрость!

1 Ответ

1 голос
/ 27 ноября 2011

Вы должны использовать класс CCMenu в качестве родительского для CCMenuItem и производных классов. Вы добавляете CCMenuItemImage к себе, который является экземпляром CCNode.

Вместо этого создайте класс CCMenu и добавьте его в свой узел, а затем добавьте все экземпляры CCMenuItem * в CCMenu. Обратитесь к этому руководству для получения более подробной информации .

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