Проблема с анимацией uiimageView: анимация останавливается - PullRequest
0 голосов
/ 24 июля 2011

Вот мой код:

-(void) createNewBall {

  UIImage * image = [UIImage imageNamed:@"bulle_03.png"];
  bulleBouge = [[UIImageView alloc] initWithImage:image];

  [bulleBouge setCenter:[self randomPointSquare]];
  [[self view] addSubview:bulleBouge];

}

-(void)moveTheBall{

  bulleBouge.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);

}

createNewBall вызывается каждые две секунды.Моя проблема в том, что каждый созданный bulleBouge перестает двигаться через две секунды.Я не знаю почему.

Как мне решить эту проблему, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 24 июля 2011

Останавливается, потому что вы инициализируете новый bulleBouge каждые две секунды. Вы также теряете память, так как никогда не освобождаете ее, прежде чем присваиваете ей новое значение. так что получается, что после создания imageView вы сохраняете ссылку только на последний экземпляр, следовательно, только последний меняет позицию. Чтобы исправить это, сохраните все ваши новые uiImageViews в массиве и переместите их случайным образом через две секунды.

-(void) createNewBall {

  UIImage * image = [UIImage imageNamed:@"bulle_03.png"];
  UIImageView *bulleBouge = [[UIImageView alloc] initWithImage:image];
  [bulleBouge setCenter:[self randomPointSquare]];

  [bulleBougeArray addObject:bulleBouge];

  [[self view] addSubview:bulleBouge];

  [bulleBouge release];

}

-(void)moveTheBall{

  for(int i=0; i< [bulleBougeArray count];i++){
    UIImageView *bulleBouge = [bulleBougeArray objectAtIndex:i];
    bulleBouge.center = CGPointMake(imageView.center.x + X, imageView.center.y + Y);
   }

}
0 голосов
/ 24 июля 2011

Киприан прав.В более простой форме вы создаете новый bulleBouge каждые две секунды под одной и той же переменной.У программы уже есть такая, но, поскольку вы сказали создать новую под тем же ivar, она забывает старую и, следовательно, не перемещает ее.Вам нужен массив, чтобы каждый шарик запоминался отдельно и, следовательно, перемещался отдельно, как видно из примера кода, который он выложил.

...