0

我正在尝试创建一个上面有 UIBezierPath 的视图。这现在有效。我想将 UIImages(随机数量的图像)放在 UIBezierPath 上,并根据请求为它们设置动画,以供下一步或上一步使用。一次所有图像都指向同一个方向。

现在一直在查看所有文档,但我无法弄清楚。

所以希望有人可以帮助我或指出我正确的方向。

我认为您可以将其与一些相互追逐的赛车进行比较,而不是相互追逐,并且都从不同的位置开始。我想通过触摸将它们移动到下一个点,因此不需要循环。

4

3 回答 3

2

看看这个教程。相关代码:

//create the image layer
CALayer *car = [CALayer layer];
car.bounds = CGRectMake(0, 0, 44.0, 20.0);
car.position = CGPointMake(160, 25);
car.contents = (id)([UIImage imageNamed:@"carmodel.png"].CGImage);
[self.view.layer addSublayer:car];

// animate it
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = trackPath.CGPath;
anim.rotationMode = kCAAnimationRotateAuto;
anim.repeatCount = HUGE_VALF;
anim.duration = 8.0;
[car addAnimation:anim forKey:@"race"];

为所有图层(图像)添加此动画。

于 2012-04-05T07:09:09.020 回答
1

您可能必须UIBezierPaths为每个段构造一个 , 数组。跟踪每个UIImage位置,并使其沿适当的段移动。

这仅在您有离散步骤时才有效。遗憾的是,您不能使用该values属性将移动限制在总路径的一部分……但这被忽略了。应该可以进行子类CAMediaTimingFunction化以将其输出范围更改为 0 到 1 以外的值,但其中所有重要部分都是私有的。

于 2012-04-12T02:56:26.113 回答
0

您可以使用 strokeStart 和 strokeEnd 属性来获取从 0 到 1 的值,以便将对象定位在路径上。

于 2012-07-26T06:42:21.883 回答