userdata из CCNode - PullRequest
       17

userdata из CCNode

2 голосов
/ 22 марта 2011

У меня есть CCMenuItemSprite, который создается для вызова функции:

`

menuControl = [CCMenu menuWithItems: nil];

//Create the buttons
for(int i=1;i<17;i++)
{
  Button *B_image = [Button buttonWithTexture:Sheet.texture type:i];

  CCMenuItemSprite *menuButton = [CCMenuItemSprite itemFromNormalSprite:B_image  selectedSprite:B_image target:self selector:@selector(generateEnemy:)];

NSNumber *Btype = [NSNumber numberWithInt:i];
menuButton.userData = Btype;

[menuControl addChild:menuButton];

}

[self addChild:menuControl];`

Как вы можете видеть выше, я использую menuButton.userData для передачи NSNumber. Это для передачи параметра в функцию generateEnemy.

`-(void) generateEnemy:(CCMenuItemSprite*)sender
{
    NSNumber *Btype = (NSNumber*)sender.userData;

        int Etype = [Btype intValue];

        enemy = [[Enemy alloc]init:ccp(300,0) Type:Etype];
}

Вылетает при этом: NSNumber *Btype = (NSNumber*)sender.userData; Работает на номер 1-12. Но с 13 и выше он вылетает.

1 Ответ

1 голос
/ 05 августа 2011

Я решил эту проблему довольно давно. Это происходит из-за этой концепции здесь .

Как я передаю данные:

for(int i=1;i<17;i++)
{
   Button *B_image = [Button buttonWithTexture:Sheet.texture type:i];

   CCMenuItemSprite *menuButton = [CCMenuItemSprite itemFromNormalSprite:B_image  selectedSprite:B_image target:self selector:@selector(generateEnemy:)];

   menuButton.tag = i;

   [menuControl addChild:menuButton];

}

В функции generateEnemy:

-(void) generateEnemy:(id) sender
{
      enemy = [[Enemy alloc]init:ccp(300,0) Type:[sender tag]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...