iPhone:如何为CAShape行设置动画,其路径由用户输入决定

时间:2012-06-30 02:10:23

标签: iphone objective-c animation calayer cabasicanimation

我试图复制"蠕虫"这有时候会出现在政治辩论中,以表示观众对候选人回答问题的看法。它基本上是一条沿x轴动画来表示时间的线,在y轴上上下表示意见。

我看到我可以通过

来做这个动画
  1. 创建UIBezierPath并将其moveToPoint / addLineToPoint方法与预定义的坐标集一起使用。
  2. 创建CAShapeLayer并将其path属性设置为上述UIBezierPath。
  3. 创建一个CABasicAnimation并将其添加到CAShapeLayer。
  4. 这一切都很好,但我需要通过用户输入实时影响线路(点击按钮向上或向下移动线路),这意味着在上面的第一步中我不能有一组预先定义的坐标。除非接收到用户的输入以使其也垂直移动,否则该线应水平移动。

    所以我的问题是我该如何解决这个问题?我是否仍然可以某种方式使用我在上面的要点中描述的方法进行一些修改,或者我是否必须使用不同的方法?

    非常感谢任何建议!

    [编辑]

    我只是想一想,这可能有效,但效率有点低,我不确定创建的路径是否会非常短,即不是从起点开始的完整路径,而只是当前绘制的部分路径?!如果我做了以下怎么办:

    • 创建两个变量 lastPoint currentPoint ;
    • 重复调用执行以下操作的draw方法
      1. [path moveToPoint:lastPoint];
      2. [path addLineToPoint:currentPoint];
      3. lastPoint = currentPoint;
      4. currentPoint = [self calculateNewPointFromUserInput];
      5. 重复序列;

1 个答案:

答案 0 :(得分:0)

对你来说,两点非常简短,你可以拍摄一系列用户的触摸事件,然后从数组中抽取最后10-15个点。我认为这符合你的目的。