在一种方法中有多个添加子项

时间:2014-12-18 12:40:25

标签: objective-c xcode methods

为什么这不起作用:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{   
    int i;
    i = i + 1;
    if (i == 1)
    {
        int r = arc4random_uniform(4);
        if (r == 0)
        {
            [self addChild: [self createBackground0]]; <- doesn't work
        }
        else if (r == 1)
        {
            [self addChild: [self createBackground1]]; <- doesn't work
        }
        else if (r == 2)
        {
            [self addChild: [self createBackground2]]; <- doesn't work
        }
        else
        {
            [self addChild: [self createBackground3]]; <- doesn't work
        }
    }
}

这将是:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    int i;
    i = i + 1;
    if (i == 1)
    {
        [self addChild: [self createBackground0]]; <- works
    }
}
似乎添加一个带有方法引用的addchild,名为createBackground0以及其他1,2和3,当我在if语句中只有1个确保后台可以只产生一次。我最初的计划是玩一个游戏,玩家点击屏幕来玩游戏,但是为了让事情变得有点无聊,我制作了4个不同的背景,然后我制作了一个arc4random_uniform整数并将其分配给r然后根据它选择的数字在if语句中,它将运行该行代码,然后发送添加相应的子代。 createBackground方法如下所示:

-(SKSpriteNode*) createBackground0
{
    SKSpriteNode *waves0 = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
    waves0.anchorPoint = CGPointMake(-0.81,-0.5);
    waves0.name = @"waves0";

    return waves0;
} 

我使用一个锚点因为.position没有移动精灵而我正在使用.name因为我将在update()方法中引用精灵来制作滚动背景。

当我有一个addchild但它似乎无法在一个方法中添加两个或三个时,它似乎正常工作。它与if语句的数量有关。

对于任何草率的代码感到抱歉,因为我正在从c#过渡到objective-c并且仅在一周前开始。谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

i变量尚未初始化为0,这会导致未定义的行为(即,在这两种情况下都无法保证i == 0)。修复此问题:

int i = 0;

其余的代码看起来应该可以正常工作。