2014-02-12 2 views
0

이미지를 특정 위치로 이동하고 싶습니다. 또한 이미지의 특정 위치에 도달했는지 여부에 관계없이 매초마다 이미지의 현재 위치를 확인해야합니다. 그래서, 나는 다음과 같은 한 :UIView 애니메이션을 중지하지 않고 이미지의 현재 위치

-(void)viewWillAppear:(BOOL)animated{ 

[self moshaMoveUp:mosha1 with:206 and:89]; 
playerLifeCount = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(deductPlayerLife) userInfo:nil repeats:YES]; 

} 

-(void)moshaMoveUp: (UIImageView *)mosha with:(int)x and:(int)y{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:7.0]; 
[UIView setAnimationDelay:0]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDelegate:self]; 
mosha.center = CGPointMake(x, y); 
[UIView commitAnimations]; 

} 

그러나 문제는 'moshaMoveUp'방법은 처음에 호출 될 때, 이미지의 중심이 그 시간에 (206,89)로 설정되어 있습니다. 그래서, 매 순간 나는 현재 위치를 확인하고, 현재 위치가 아니라 이미지가 도달하기를 원하는 위치의 결과를 보여줍니다. 이미지가 아직 그 위치에 도달하지 않은 경우에도 마찬가지입니다.

-(void)deductPlayerLife{ 

NSLog(@"x : %f",mosha1.frame.origin.x); 
NSLog(@"y : %f",mosha1.frame.origin.y); 

} 

그래서, 매 초마다 이미지의 이동을 중지하지 않고 그 이미지의 실제 현재 위치를 어떻게 얻을 수 있습니다.

답변

5

애니메이션의 현재 위치를 얻으려면 QuartzCore presentationLayer을 사용할 수 있습니다. 당신은 이미 그 일을하지 않은 경우

CGRect moshaFrame = [[mosha1.layer presentationLayer] frame]; 

이 Quartzcore를 가져올 것을 잊지 마십시오 다음과 같이

당신은 mosha의 위치를 ​​얻을 것입니다.

#import <QuartzCore/QuartzCore.h> 

P.S. 대신 애니메이션 블록을 사용합니다. iOS 4.0부터는 애니메이션 스타일을 사용하지 않는 것이 좋습니다.

0

이 작업을 수행하는 이상적인 방법은 타이머 바인딩 된 메서드 호출 (예 : update)을 사용하여 UIView 애니메이션 대신 이미지를 이동하는 것입니다.

이미지에 대한 타이머 호출 당 x, y 좌표를 보간 한 다음 동일한 방법 (보간 후)에서 이미지의 프레임과 위치를 확인하여 deductPlayerLife을 호출하십시오.

당신이 게임을 할 때, 게임 개발의 기초를 찾으라고 권하고 싶습니다. 반드시 update 것을 제안 할 것입니다.

관련 문제