我有一个 CAEmitterLayer
沿着一个贝塞尔曲线路径(闭合形式,如一个“8”,由四个控制点组成)进行动画,并使用一个 CAKeyframeAnimation
。现在我想通过手指滑动(但不一定在路径上)来控制动画的播放。这种操作是否可行?如果可以,如何实现呢?
我有一个 CAEmitterLayer
沿着一个贝塞尔曲线路径(闭合形式,如一个“8”,由四个控制点组成)进行动画,并使用一个 CAKeyframeAnimation
。现在我想通过手指滑动(但不一定在路径上)来控制动画的播放。这种操作是否可行?如果可以,如何实现呢?
CGpoint click;
变量来记住你的初始“拖动”点,然后创建一个本地的 NSEvent
处理程序...[NSEvent addLocalMonitorForEventsMatchingMask: NSMouseMovedMask
| NSLeftMouseDownMask
handler:^(NSEvent *e) {
if ( e.type == NSLeftMouseDown ) click = e.locationInWindow;
else "yourDelta" = click - e.locationInWindow; // pseudoCode
return e;
}];
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)e {
click = [e locationInView:_yourView];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)e {
"yourDelta" = click - [e locationInView:_yourView]; // pseudoCode
}
关于“寻找”您的动画... 一种可能的方法是简单地使用您之前的toValue
,而不是基于0或您的模型layer
的fromValue
,而是使用您的layer.presentationLayer
值? 没有看到您的完整CAKeyframeAnimation
内容很难说。