0

私は uiimageview を持っていて、時計のアニメーションの実行中に移動したい.問題は、ボタンを押して移動すると、アニメーションが画像を再生し、画像の再生が終了した後、画像が 10px 移動し始めることです。このようなことはあってはならず、アニメーションと動きは一緒に開始および終了する必要があります。

-(IBAction) MoveRightButton : (id) sender {

 [self animateRight];
[self rightTimer];

}

-(IBAction) stopRight {

[image stopAnimating];
[rightTimer invalidate];

}

-(void) animateRight {

NSArray * moveRight = [[NSArray alloc] initWithObjects :
[uiimage imageNamed : @"Clock1.png"] , .... , nil];

UIImage *defaultImage = [UIImage imageNamed : @"Clock1.png"];
[image setImage : defaultFace];
image.animationImages = moveRight;

image.animationDuration = 0.5;
image.animationRepeatCount = 1;
[image startAnimating];
}

-(void) goRight {
[UIView animateWithDuration : 0.5 animation : ^{
image.frame = CGRectMake (image.frame.origin.x + 10, image.frame.origin.y,image.frame.size.width, image.frame.size.height);
}];
[self stopRight];
}

-(void) rightTimer {
rightTimer = [NSTimer scheduledTimerWithTimeInterval : 0.5 
target : self  
selector : @selector(goRight) 
userInfo : nil  
repeats : YES];

if (rightTimer == nil) {
rightTimer = [NSTimer scheduledTimerWithTimeInterval : 0.5 
target : self  
selector : @selector(goRight) 
userInfo : nil  
repeats : YES];
 }
}
4

1 に答える 1

0

こんにちはあなたは単純な間違いをしています。ボタンをクリックするだけで、同じアニメーションでアニメーションタスクと右向きタスクの両方を次々に実行してください...一度に発生させたい場合は、2つのアニメーションが異なる時間にアニメーション化される場合は1つのアニメーションブロックを使用してください。

#define StartAnimation(duration)                  [UIView beginAnimations:nil context:NULL];[UIView setAnimationDuration:duration];[UIView setAnimationRepeatAutoreverses:NO];[UIView setAnimationRepeatCount:0]

#define StopAnimation                   [UIView commitAnimations]

これらのマクロを定義し、アニメーションの開始と停止の間でタスクを実行します

于 2013-01-07T15:06:04.543 に答える