<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Path Structure</title> <link rel="stylesheet" href="../css/style.css"> <script type="text/javascript" src="../../dist/paper.js"></script> <script type="text/paperscript" canvas="canvas"> var path = new Path({ fullySelected: true }); var segmentTexts = new Layer(); for (var i = 0; i < 3; i++) { new PointText({ content: i, justification: 'center', fontSize: 12 }); } var handleTexts = new Layer(); for (var i = 0; i < 2; i++) { new PointText({ content: 'handleIn', justification: 'center', fontSize: 12 }); new PointText({ content: 'handleOut', justification: 'center', fontSize: 12 }); } function onResize() { var width = view.size.width; var offset = width / 30; var vector = new Point({ angle: 45, length: width / 5 }); var yMiddle = view.size.height / 2; path.segments = [ { point: [offset, yMiddle], handleIn: null, handleOut: vector.rotate(-90) }, { point: [width / 2, yMiddle], handleIn: vector.rotate(-180), handleOut: vector }, { point: [width - offset, yMiddle], handleIn: vector.rotate(90), handleOut: null } ]; for (var i = 0; i < path.segments.length; i++) { var point = path.segments[i].point; segmentTexts.children[i].point = point - [0, 10]; } onMouseMove({ point: view.bounds.bottomRight }); } function onMouseMove(event) { var point = event.point.clone(); // Constrain the event point, to not cut off the text: if (point.y < 22) { point.y = 22; } if (point.y > view.size.height - 24) { point.y = view.size.height - 24; } var delta = point - view.center; for (var i = 0; i < path.curves.length; i++) { var curve = path.curves[i]; curve.handle1.y = curve.handle2.y = delta.y * (i % 2 ? 1 : -1); var firstPoint = curve.point1 + curve.handle1; var secondPoint = curve.point2 + curve.handle2; var yMiddle = view.size.height / 2; var offset = (firstPoint.y < yMiddle ? [0, 10] : [0, -18]); handleTexts.children[i * 2].point = secondPoint - offset; handleTexts.children[i * 2 + 1].point = firstPoint - offset; } } </script> </head> <body> <canvas id='canvas' resize></canvas> </body> </html>