我有一个实例化的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岁以上,它就会崩溃。
发布于 2011-08-05 09:36:23
我很久以前就解决了这个问题。由于这个概念here,它崩溃了。
我传递数据的方式是:
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]];
}https://stackoverflow.com/questions/5392228
复制相似问题