例如:
我用手指画下面的橙色线,当它接触蓝色方块时,它们会亮起来。
我可以使用我发现的StackOverflow问题/教程中的UIBezierPath绘制一条线,但我不知道如何让它消失或与其他视图交互。
这不适用于游戏,只适用于常规iOS应用。我不确定这是否会改变一切。
有什么想法吗?
我已经实现了一个不流畅的垃圾版本,但在线条画方面有我想要的感觉
//1
答案 0 :(得分:1)
如果是"它"在"它接触蓝色方块",你的意思是线,这将很难做到。一行没有rect,所以你不能使用像CGRectIntersectsRect这样的方法来查看直线和方形是否相交。使用手指的触点(应该是线的位置)会更容易。您可能希望在数组中使用蓝色方块,并在touchesMoved内部循环遍历数组,以查看是否有任何方块包含触摸点(使用CGRectContainsPoint)。
答案 1 :(得分:1)
您可能已经进行了UIPanGesture
设置或touchesBegan:
/ touchesMoved:
实施,可以进行绘图。由于您总是在达到当前手指的位置,因此您可以使用平移手势或touche的locationInView:
CGPoint(您应该已经使用它来更新您的UIBezierPath)检查它是否与CGRectContainsPoint
的一个方格相交。
为了让你的线渐弱,最简单的方法是在你停止绘画时启动一个计时器,并使包含该绘图的图层逐渐消失:
CABasicAnimation *fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue = @(1);
fadeAnim.toValue = @(0);
fadeAnim.duration = 1;
[myLayer addAnimation:fadeAnim forKey:nil];
myLayer.opacity = 0;
或者你可以设置线条动画以使其缩短"缩短" (如蛇游戏),如果你使用CAShapeLayer:
CABasicAnimation *strokeAnim = [CABasicAnimation animationWithKeyPath:@"strokeStart"];
strokeAnim.fromValue = @(0);
strokeAnim.toValue = @(1);
strokeAnim.duration = 3;
[shapeLayer addAnimation:strokeAnim forKey:nil];
为了让它从线的开头逐渐消失到最近的部分,这是另一个故事,因为它要求你画画"你的线条有渐变色。