sprite kit节点不会removeFromParent

时间:2014-03-17 04:15:15

标签: nsarray sprite-kit

在那里,我正在制作一个使用Sprite Kit的游戏,我有一个方法,它有一个NSArray,一个for循环和一些SKACTIONS。现在,这个数组有7个项目。 for循环随机选取一个数组的内容并在屏幕上显示并使用SKActions,该项目按比例缩小,另一个按比例放大。然而,在similuator的底部,它表明节点的数量不断堆积。例如,如果出现一个精灵,而不是1个节点,则4个节点显示为模拟器屏幕底部的节点数。您认为这里可能有什么问题?

这是我的代码。

-(void) ItemMakerMe {
    myArray = [[NSMutableArray alloc] initWithObjects:@"item1", @"item2", @"item3", @"item4", @"item5",  @"item6", @"MyNull", nil];
    NSUInteger arraypicker = arc4random() % [myArray count];
    for (int i=0; i < arraypicker; ++i) {
        NSString *d1 = [myArray objectAtIndex:i];
        sprites = [SKSpriteNode spriteNodeWithImageNamed:d1];
        sprites.name = @"items";
        sprites.position = CGPointMake(ScalarRandomRange(0, self.size.width/2), ScalarRandomRange(0, self.size.height/2));
        sprites.xScale = 0;
        sprites.yScale = 0;
        [self addChild:sprites];
    }
}

-(void) OneItemONLY {
    SKAction *appear = [SKAction scaleTo:0.19 duration:0.5];
    SKAction *waiter = [SKAction waitForDuration:0.5];
    SKAction *scaleDown = [SKAction scaleTo:0.0 duration:0.5];
    SKAction *remover = [SKAction removeFromParent];
    [sprites runAction:[SKAction sequence:@[appear, waiter, scaleDown, remover]]];
}

同样在init方法中,我这样运行:

  [self runAction:[SKAction repeatActionForever:[SKAction sequence:@[[SKAction performSelector:@selector(ItemMakerMe) onTarget:self],
                                                                     [SKAction waitForDuration:2.0]]]]];

  [self runAction:[SKAction repeatActionForever:[SKAction sequence:@[[SKAction performSelector:@selector(OneItemONLY) onTarget:self],
                                                                     [SKAction waitForDuration:2.0]]]]];

1 个答案:

答案 0 :(得分:0)

如果我理解正确,我相信for循环运行i值的最后一个节点的动作,但仍然在循环结束之前添加其他精灵。

IE:假设arraypicker的值为4,那么for循环将从数组中选择NSString,用图像,名称初始化sprites对象,位置等,然后它被添加到自己的孩子,这重复4次但只有最后添加的sprites实例将具有您想要的图像并将运行动作。

我的意思是,如果您只想从数组中选择一个随机值,并设置其属性,则可以删除for循环。

摘要:[self addChild:sprites]正在添加相同的对象i次,并导致节点增量。