uiimageView动画问题:动画停止

时间:2011-07-24 07:35:17

标签: iphone xcode animation timer uiimageview

这是我的代码:

-(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);

}
每两秒调用一次{p> createNewBall。我的问题是,创建的每个bulleBouge在两秒钟后停止移动。我不知道为什么。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

停止移动b / c你每两秒钟初始化一次新的bulleBouge。你也是在泄漏记忆,因为你在给它赋予新价值之前从不贬低它。所以会发生的是,在你创建imageView之后,你只保留对lasts实例的引用,因此只有最后一个是改变位置。要修复此存储,请将所有新的uiImageView存储在一个数组中,并在两秒后随机移动它们。

-(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);
   }

}

答案 1 :(得分:0)

塞浦路斯是正确的。在一个更简单的形式中,您将在同一个变量下每两秒创建一个新的bulleBouge。该程序已有一个,但由于你告诉它在同一个ivar下制作一个新的,它会忘记旧的,因此不会移动它。你需要一个数组,这样每个球都可以单独记住,因此可以单独移动,如他发布的示例代码所示。