【问题标题】:XCODE - How to update array?XCODE - 如何更新数组?
【发布时间】:2012-07-25 21:41:21
【问题描述】:

我对 Xcode/编程非常陌生,正在尝试修改现有代码

我遇到了一个小问题,我在某个特定时间在屏幕上有大量对象(敌人)并且无法重新定义它们的值。我将我的敌人设置为从屏幕上的 3 开始。

我的目标是根据当前分数改变敌人的数量。

我附上了下面代码的sn-ps。

int numberOfEnemies;

if (self.score>=0) {
numberOfEnemies = 3
}

else if (self.score>=100) {
numberOfEnemies = 4
}


// Setup array 

enemyArray = [[NSMutableArray alloc] init];

for(int i = 0; i < numberOfEnemies; i++) {
    [enemyArray addObject:[SpriteHelpers setupAnimatedSprite:self.view numFrames:3
    withFilePrefix:@"enemyicon" withDuration:((CGFloat)(arc4random()%2)/3 + 0.5)
    ofType:@"png" withValue:0]];
}

enemyView = [enemyArray objectAtIndex:0];

当我的分数更新时,我需要做什么才能将numberOfEnemies 的新值解析到数组中?

【问题讨论】:

  • 哪个数组?我认为您需要显示更多代码。
  • 您现在显示的代码是在某种更新函数中吗?包含你的敌人的数组的大小是多少?我猜你是在重复使用它们,还是它们目前只是静态/非交互的?
  • @pb2q 请参阅更新数组组件。希望这会有所帮助
  • 我要问的是上面的代码是什么功能。它会多次运行吗?如果是这样,您的代码应该根据您提供的内容工作。如果不是,您看到的错误/不良行为是什么?
  • @KarolyS 嗨,Karoly 你是在建议我创建和更新函数吗?如果有帮助,我会添加更多代码

标签: xcode arrays xcode4 nsmutablearray logic


【解决方案1】:

我将把我们的对话变成一个答案,因为我不希望它变得冗长,我可以轻松地编辑和扩展它。

到目前为止,我们已经确定您遇到问题的原因是您在 viewDidLoad 函数中执行了上述代码,该函数在应用程序首次启动时至少会运行一次。问题在于你已经发现,你没有机会看到一个新的分数,然后更新敌人的数量。

我知道 iOS 的游戏更新循环通常按以下结构完成,但我建议在线查找教程以获取更有效/更正确的方法。

根据您当前的结构,我将采用您上面的代码并从中创建一个新函数:

-(void) updateDifficulty:(NSTimer *)gameTimer
{
    //This can be the code you have above for now
}

然后,在您的 viewDidLoad 中,我会输入以下代码:

-(void) viewDidLoad:
{
    gameTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(updateDifficulty:) userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:gameTimer forMode:NSDefaultRunLoopMode];
}

它的作用是声明一个计时器来跟踪游戏时间,并根据它的声明方式,每 1 秒调用一次 updateDifficulty 方法。这是您想要的一般结构,但我再次强烈建议您查看 Ray Wenderlich 的游戏教程。

希望有帮助!

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2012-07-24
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多