2011-05-12 57 views
0

我是iPhone新手,我用CGAffineTransform從上到下設置圖像的動畫,並且當圖像位於(155,50)位置時如何通過這些代碼或其他來源獲取此位置,我想執行一些任務?使用CGAffineTransform動畫化圖像並在指定點獲取CGPoint?

CGRect frameRect=CGRectMake(155, 0, 9, 8); 
boxView=[[UIImageView alloc] initWithFrame:frameRect]; 
boxView.image = [UIImage imageNamed:@"Projectile2.png"]; 
[self.view addSubview:boxView]; 
[boxView release]; 

CGPoint location = CGPointMake(159.5, 500); 

[UIImageView beginAnimations:nil context:nil]; 
[UIImageView setAnimationDelegate:self]; 
[UIImageView setAnimationDuration:1.5f]; 
[UIImageView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

CGAffineTransform scaleTrans = CGAffineTransformMakeScale(scaleFactor, scaleFactor); 
CGAffineTransform rotateTrans = CGAffineTransformMakeRotation(angle * M_PI/180); 

boxView.transform = CGAffineTransformConcat(scaleTrans, rotateTrans); 
angle = (angle == 180 ? 360 : 180); 
boxView.center = location; 
[UIImageView commitAnimations]; 

在此先感謝...

回答

1

AFAIK沒有回調將在動畫中被調用,只是在開頭或動畫結束(這似乎真的都爲基於塊的動畫和舊的非塊方法)

你可以做這樣的事情:

1寄存器中的志願觀察員要跟蹤

視圖的「中心」屬性
[viewToTrack addObserver:anObserver 
       forKeyPath:@"center" 
       options:NSKeyValueObservingOptionNew 
       context:somePointerToYourContextOrNIL]; 

2-每次中心屬性發生變化時都會調用回調函數。 anObserver必須實現此方法

- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context 

的keyPath將包含您所跟蹤的屬性的名稱,對象是viewToTrack

變化將包含新值(基於前面的示例)和上下文是

somePointerToYourContextOrNIL(也可以是零)

中,您將收到回調3-(根據你如何註冊它)老和/或該屬性的新值

4-檢查,當你足夠近的地步,你應該做的wgìhat你需要做的

這裏是KVO

底漆