2012-04-26 70 views
0

我想在首先屏蔽掉整個屏幕的情況下產生效果。當一個球在屏幕上移動時,球揭開了它所在的區域,並且它仍然沒有被掩蓋。保持屏蔽動畫上的蒙版圖像

我有以下代碼:

CALayer * ball = [CALayer layer]; 
ball.bounds = CGRectMake(0, 0, 42, 42); 
ball.position = [[[alphabet controls] objectAtIndex:0] CGPointValue]; 
ball.contents = (id)([UIImage imageNamed:@"done.png"].CGImage); 
[self.layer addSublayer:ball]; 

[self.layer setMask:ball]; 

CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
anim.path = path; 
anim.repeatCount = HUGE_VALF; 
anim.duration = 8.0; 
[ball addAnimation:anim forKey:@"race"]; 

這個動畫掩蓋了整個視圖,並只顯示什麼是球層的後面。 我的問題是:我怎樣才能保持揭露的屏幕部分?

回答

0

嗯。

你想要的是一個圖像,其中包含所有的像素,球的形狀經歷。

如果您使用基於幀的動畫製作動畫,您可以創建一個灰度(或1位)圖像並將其安裝爲遮罩層的內容。然後,當你移動球時,你可以在每一幀畫出你的面具圖像。

我不知道如何獲得與核心動畫相同的效果。

你可以讓你的面具成爲一個CAShapeLayer,創建一個描述你球的整個路徑的CGPath,併爲你的形狀圖層創建路徑。如果您的球是圓形的,您可以將形狀圖層的線條粗細設置爲球的大小。這將工作。如果你的球是一個不規則的形狀,但是,這種方法是行不通的。 iOS上的Quartz圖形沒有任何我知道的用任意形狀筆刷畫出路徑的方法。