Iphone uiimageView的帧动画减少

Iphone uiimageView的帧动画减少,iphone,xcode,animation,uiimageview,frame,Iphone,Xcode,Animation,Uiimageview,Frame,大家好,这是我的代码: - (void)viewDidLoad { [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0/60.0]; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; [super viewDidLoad]; } -(void)accelerometer:(UIAccelerometer *)accelerometer

大家好,这是我的代码:

- (void)viewDidLoad {

    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0/60.0];
    [[UIAccelerometer sharedAccelerometer] setDelegate:self];
    [super viewDidLoad];
}

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    valueX = acceleration.x *20.0;
    valueY = acceleration.y *-20.0;

    int newX = (int)(imageView.center.x+valueX);
    int newY = (int)(imageView.center.y+valueY);

    CGPoint newCenter = CGPointMake(newX,newY);
    imageView.center=newCenter;

    UIImageView* imageView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ball.png"]];
    imageView2.frame = CGRectMake(newX-12, newY-12, 24, 24);
    [self.view addSubview:imageView2];
    [UIView beginAnimations:nil context:imageView2];
    [UIView setAnimationDuration:10.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    imageView2.frame = CGRectMake(newX-2, newY-2, 4, 4);
    [imageView2 setAlpha:0.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(removeSmoke:finished:context:)];
    [UIView commitAnimations];  
    if(imageView2.alpha=0){
        [imageView2 removeFromSuperview];
    }


    [self.view bringSubviewToFront:imageView];

}

起初,我的动画非常平滑,使用1.0/60.0,但几秒钟后,动画错误和不平滑,我认为它变成了1.0/5.0。我不知道为什么。我怎样才能解决这个问题?对不起,我说的是英语,我是法国人:/

我不太清楚你想达到什么目的。似乎每次启动加速计时,您都会添加一个新的imageView动画,并希望根据一些规则移动它,同时缩小图像。但是,您的代码存在问题。您从不调用
[imageView2 release],因此您可能会在一段时间后遇到内存问题

您也可能在方法
@selector(removemoke:finished:context:)
中进行了太多计算,但我需要查看代码才能对此有所帮助

如果您知道一次计划拥有多少个UIImageView,那么最好预加载它们,并将它们放入阵列中以便于访问。这样,您可以移动一个UIImageView,然后移动到下一个UIImageView

如果您是为iOS 4.0或更高版本拍摄,我还建议您使用块动画。它们更容易使用,而且我发现在处理器上也容易得多。比如:

[UIView animateWithDuration:10.5
                     animations:^{ 
                       CGRect newRect = imageView2.frame;
                       newRect.origin.x -= newX-2;
                       newRect.origin.y -= newY-2;
                       imageView2.frame = newRect;
                     } 
                     completion:^(BOOL finished){

                       [UIView animateWithDuration:0.1
                                        animations:^{ 
                                          // This is where you complete your animation, maybe remove from view or something?
                                        } 
                                        completion:^(BOOL finished){
                                          ;
                                        }];
                     }];
最后,我建议您只设置
imageView2.hidden=YES,这样它就不会被绘制,并且具有相同的效果。希望有帮助