在掩码动画上保持取消屏蔽图像

时间:2012-04-26 11:48:58

标签: ios core-animation

我试图制作一个效果,首先整个屏幕被屏蔽掉。当一个球在屏幕上移动时,球会清除它所在的区域,并且它所在的区域仍未被遮盖。

我有以下代码:

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"];

此动画会遮盖整个视图,并仅显示球层后面的内容。 我的问题是:我怎样才能揭开被揭示的屏幕部分?

1 个答案:

答案 0 :(得分:0)

嗯。

你想要的是一个包含球形所经过的所有像素的图像。

如果您使用基于帧的动画制作动画,则可以创建灰度(或1位)图像并将其作为蒙版图层的内容进行安装。然后,当您移动球时,您可以将其绘制到每个帧的蒙版图像中。

我不确定如何使用Core动画获得相同的效果。

你可以让你的面具成为CAShapeLayer,创建一个描述球的整个路径的CGPath,并将其作为形状图层的路径。如果您的球是圆形的,您可以将形状图层的线条粗细设置为球的大小。那会有用。但是,如果你的球是不规则的形状,那么这种方法是行不通的。 iOS上的Quartz图形没有任何我知道用任意形状笔刷描边的方法。