我试图制作一个效果,首先整个屏幕被屏蔽掉。当一个球在屏幕上移动时,球会清除它所在的区域,并且它所在的区域仍未被遮盖。
我有以下代码:
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 :(得分:0)
嗯。
你想要的是一个包含球形所经过的所有像素的图像。
如果您使用基于帧的动画制作动画,则可以创建灰度(或1位)图像并将其作为蒙版图层的内容进行安装。然后,当您移动球时,您可以将其绘制到每个帧的蒙版图像中。
我不确定如何使用Core动画获得相同的效果。
你可以让你的面具成为CAShapeLayer,创建一个描述球的整个路径的CGPath,并将其作为形状图层的路径。如果您的球是圆形的,您可以将形状图层的线条粗细设置为球的大小。那会有用。但是,如果你的球是不规则的形状,那么这种方法是行不通的。 iOS上的Quartz图形没有任何我知道用任意形状笔刷描边的方法。