首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCNode的用户数据

CCNode的用户数据
EN

Stack Overflow用户
提问于 2011-03-22 21:44:10
回答 1查看 481关注 0票数 2

我有一个实例化的CCMenuItemSprite来调用一个函数:

`

代码语言:javascript
复制
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函数。

代码语言:javascript
复制
`-(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岁以上,它就会崩溃。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-05 09:36:23

我很久以前就解决了这个问题。由于这个概念here,它崩溃了。

我传递数据的方式是:

代码语言:javascript
复制
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函数中:

代码语言:javascript
复制
-(void) generateEnemy:(id) sender
{
      enemy = [[Enemy alloc]init:ccp(300,0) Type:[sender tag]];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5392228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档