为什么这不起作用:
-(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并且仅在一周前开始。谢谢你的回答。
答案 0 :(得分:0)
i
变量尚未初始化为0
,这会导致未定义的行为(即,在这两种情况下都无法保证i == 0
)。修复此问题:
int i = 0;
其余的代码看起来应该可以正常工作。