関数を呼び出すためにインスタンス化する 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以降ではクラッシュします。