CCNode的用户数据

发布于 2024-10-24 20:05:44 字数 950 浏览 1 评论 0原文

我有一个 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及以上就崩溃了。

I have a CCMenuItemSprite that is instantiate to call a function:

`

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];`

As you can see in the above, I'm using the menuButton.userData to pass in an NSNumber.
This is to "pass a parameter" to the generateEnemy function.

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

        int Etype = [Btype intValue];

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

It crashes at this: NSNumber *Btype = (NSNumber*)sender.userData;
It works for number 1-12. But 13 and above, it crashes.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黑凤梨 2024-10-31 20:05:44

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

我传递数据的方式是:

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]];
}

I've solve this problem quite a while back.
It crashes due to this concept here.

How I pass data is:

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];

}

In the generateEnemy function:

-(void) generateEnemy:(id) sender
{
      enemy = [[Enemy alloc]init:ccp(300,0) Type:[sender tag]];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文