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代码>,这样它就不会被绘制,并且具有相同的效果。希望有帮助