2012-04-26 5 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 그래픽에는 임의의 모양의 브러시로 패스를 선을 그릴 수있는 방법이 없습니다.

관련 문제