我想让多个图像(在本例中为篮球)在屏幕上移动。
如何创建多个具有相同名称的球?我有一个球已经在四处移动。所以所有其他球应该使用相同的计算和相同的属性名称来进行碰撞和类似的事情。
有人能帮我吗?我很了解 Java,但不了解 Obj C。
编辑:
ball.center = CGPointMake(ball.center.x + ballmovement.x, ball.center.y + ball movement.y);
if (ball.center.x > self.view.frame.size.width || ball.center.x < 0) {
ballmovement.x = -1* ballmovement.x;
}
if (ball.center.y > self.view.frame.size.height || ball.center.y < 0) {
ballmovement.y = -1* ballmovement.y;
这是我的简单计算。这段代码在我的循环方法中。此循环方法由我的 viewDidLoad 方法中的此代码调用:
[NSTimer scheduledTimerWithTimeInterval:0.050 target:self selector:@selector(loop) userInfo:nil repeats:YES];
在我写的 MainView .h 文件中
BasketballView *ball;
新球是由我的按钮操作方法中的此代码创建的:
for (int x = 0; x < numberOfBalls; x++)
{
ball = [[BasketballView alloc]initWithFrame:CGRectMake(arc4random()%100,arc4random()%100, 40, 40) andCustomProperty:@"my string" andAnotherProperty:100];
[self.view addSubview:ball];
}
当我运行我的应用程序时,只有一个球在移动!你需要更多代码吗?感谢您的帮助
编辑2:
现在每个球都在移动,但它们没有正确移动..这就是我所做的。我创建了一个 NSMuteableArray。我在我的 Button 操作方法中添加了这段代码:
[array addObject:ball];
之后,我在循环方法中添加了一些代码。这是我现在拥有的新循环代码:
for (int i=0; i<array.count;i++){
ball = [array objectAtIndex:i];
ball.center = CGPointMake(ball.center.x + ballmovement.x, ball.center.y + ballmovement.y);
}
if (ball.center.x > self.view.frame.size.width || ball.center.x < 0) {
ballmovement.x = -1* ballmovement.x;
}
if (ball.center.y > self.view.frame.size.height || ball.center.y < 0) {
ballmovement.y = -1* ballmovement.y;
现在,当一个球击中边界时,每个球都在改变方向。所以所有其他球都像这个球一样移动。他们无视寄宿生。只有当这一球击中边界时,他们才会改变方向。
如果我将球运动的代码放在 for 循环中,每次其中一个球击中边界时,球都会改变方向。他们正在疯狂地移动,因为每 0.5 秒就有一个球击中一名投手