ed9ac946ab72c0832a34fca5aa61503fd5ff2d433c13bba84b7703e54e7be266a6251148ea2c262083678b73d4620c9136afe779f49f868be7f7b8d2cc83c2 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf8" />
  5. <title>Smoothline Closed</title>
  6. <style>
  7. html, body, #canvas {
  8. width: 100%;
  9. height: 100%;
  10. margin: 0px;
  11. padding: 0px;
  12. }
  13. </style>
  14. <script src="../../dist/crender.map.js"></script>
  15. </head>
  16. <body>
  17. <canvas id="canvas"></canvas>
  18. </body>
  19. <script>
  20. const { CRender, extendNewGraph } = window.CRender
  21. const render = new CRender(document.querySelector('#canvas'))
  22. const [w, h] = render.area
  23. const points = [
  24. [w / 2, h / 2 - 100],
  25. [w / 2 - 100, h / 2 + 100],
  26. [w / 2 + 100, h / 2 + 100]
  27. ]
  28. const smoothline = render.add({
  29. name: 'smoothline',
  30. animationCurve: 'easeOutCubic',
  31. animationFrame: 50,
  32. drag: true,
  33. hover: true,
  34. shape: {
  35. points,
  36. close: true
  37. },
  38. style: {
  39. fill: '#ffee97',
  40. stroke: 'goldenrod',
  41. lineWidth: 2,
  42. rotate: 360
  43. },
  44. setGraphCenter (e, { style }) {
  45. if (e) {
  46. const { movementX, movementY } = e
  47. const [cx, cy] = style.graphCenter
  48. style.graphCenter = [cx + movementX, cy + movementY]
  49. } else {
  50. style.graphCenter = [w / 2, h / 2]
  51. }
  52. }
  53. })
  54. function wait (time) {
  55. return new Promise(resolve => setTimeout(resolve, time))
  56. }
  57. async function start () {
  58. await wait(1000)
  59. await smoothline.animation('style', {
  60. rotate: 0
  61. })
  62. await wait(1000)
  63. smoothline.animation('style', {
  64. fill: 'lemonchiffon'
  65. })
  66. }
  67. start()
  68. </script>
  69. </html>