首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKShapeNode选择X量

SKShapeNode选择X量
EN

Stack Overflow用户
提问于 2015-06-19 03:40:20
回答 1查看 38关注 0票数 1

问题

我正在开发一些扑克软件~纯粹是为了好玩。

现在,当谈到筹码的时候,我正在做一个噩梦。一个定位他们,两个面额和三选择我需要的!,这似乎是不可能与我目前的设计。

基本上,我画了一个skshapenode,给它命名的名称和球员的名字。然而,这个芯片可以用相同的名字绘制50次。

当我给这些芯片动画时,我只能看到一堵不可能的墙。

一旦我做了一个函数来选择正确的芯片面额用于呼叫或提高等,我将如何开始写这个伪代码?

代码语言:javascript
复制
I require 2 large chips, 1 small chip and 2 medium chips {
    SKNode *node = [self childnodewithname:denomination, playername];

    runaction..
}

要明白,我只需要拿芯片栈里的20个芯片中的2个。以及改变芯片的所有权。

这个是可能的吗?还是我把事情搞得太复杂了..?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-19 05:31:41

你需要重新设计一下你的解决方案。我会这样做:

首先,子类SKSpriteNode (或SK任何您喜欢的节点)来制作一个芯片:

Chip.h

代码语言:javascript
复制
@interface Chip : SKSpriteNode

@property (nonatomic, retain) NSString *player;
@property int denomination;

@end

Chip.m

代码语言:javascript
复制
@implementation Chip
- (id)initWithColor:(UIColor *)color size:(CGSize)size
{
  if(self = [super initWithColor:color size:size])
  {
    self.name = @"chip";
  }

  return self;
}

@end

现在,您可以合理地列举和检查一些内容。

在你的游戏场景中加入一堆筹码:

GameScene.m

代码语言:javascript
复制
-(void)didMoveToView:(SKView *)view {
  for(int i = 0; i < 50; i++)
  {
    Chip *chip = [[Chip alloc] initWithColor:[SKColor greenColor]
                                        size:CGSizeMake(100.0, 100.0)];

    chip.player = @"some player";
    chip.denomination = 10;

    [self addChild:chip];
  }
}

那么当是时候弹出一定数量的芯片时:

代码语言:javascript
复制
 -(void)popChipsFromPlayer:(NSString *)playerName
           ofDenomination:(int)denomination
            numberOfChips:(int)numChips
{
  __block int i;

  [self enumerateChildNodesWithName:@"chip"
                         usingBlock:^(SKNode *node, BOOL *stop) {
                           Chip *chip = (Chip *)node;
                           if(chip.denomination == denomination &&
                              [playerName isEqualToString:chip.player])
                           {
                             if(i==numChips)
                               return;

                             SKAction *moveUp = [SKAction moveByX:0.0
                                                                y:200.0
                                                         duration:3];

                             [chip runAction:moveUp];

                             i++;
                           }
                         }];
}

调用该方法:

代码语言:javascript
复制
  [self popChipsFromPlayer:@"some player"
            ofDenomination:10
             numberOfChips:3];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30929547

复制
相关文章

相似问题

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