2014-02-12 74 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如果您還沒有做到這一點。

#import <QuartzCore/QuartzCore.h> 

P.S.我會使用動畫塊。自iOS 4.0以來,不鼓勵使用您的動畫風格。

0

這樣做的理想方法是使用計時器綁定方法調用(如update)移動您的圖像,而不是UIView動畫。

爲您的圖像插入x,y座標的每個定時器調用,然後以相同的方法(插值後)檢查圖像的框架及其位置,以調用deductPlayerLife

由於您正在製作遊戲,因此我建議您查看遊戲開發基礎知識,以及肯定會提示此問題的東西update