複数の Ball オブジェクトを画面上に形成して跳ね返そうとしています。1つでは問題なく動作していますが、さらに追加するのに問題があります。理想的には、ボールの量はさまざまですが、今のところ、コードの残りの部分を変更するために、配列に 2 つだけ取得しようとしています。
私の問題は、すべてが正常にコンパイルされて実行されることですが、まだボールが 1 つしかありません。ここで問題が発生すると思われます。
また、viewDidLoadでこれを行うのは間違っているように感じますが、実際にどこに属しているのかわかりません。
viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
balls = [[NSMutableArray alloc] init];
CGPoint newPos = CGPointMake(5,5);
for(int i = 0; i < 2; i++) {
[balls addObject:[[[Ball alloc] init] autorelease]];
}
[[balls objectAtIndex:1] setPosition:newPos];
[NSTimer scheduledTimerWithTimeInterval:1.0 / 30.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void)onTimer
{
for(int i = 0; i < [balls count]; i++) {
Ball *b = [balls objectAtIndex:i];
[b update];
[(BallView *)self.view refresh:b];
}
}
- (void)refresh:(Ball *)aBall {
ball = aBall;
[self setNeedsDisplay];
}
onTimer を追加しました。ボールの作成に遅延を追加するだけで、これは問題にならないと思いました。すべての更新は、加速度計/画面の端との衝突に基づいて速度/方向を変更することです。