RotLenin

Untitled

Jan 9th, 2021
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. const xMax = 400;
  2. const yMax = 400;
  3. const initialValues = {x: 200, y: 205};
  4. const verticalLineLength = 150;
  5. const horisontalLineLength = 100;
  6. const LINE_WIDTH = 16;
  7. const range = 22 + LINE_WIDTH / 2;
  8.  
  9. const STEP = 25;
  10. let pos = {x : 0, y : 0};
  11.  
  12. window.addEventListener('keydown', (event) => {
  13. const keyName = event.key;
  14. switch(keyName){
  15. case 'ArrowUp' : changePath('y', -STEP); break;
  16. case 'ArrowDown' : changePath('y', STEP); break;
  17. case 'ArrowLeft' : changePath('x', -STEP); break;
  18. case 'ArrowRight' : changePath('x', STEP); break;
  19. }
  20. });
  21.  
  22. function changePath(attr, val){
  23. pos[attr] += val;
  24. drowCanvas();
  25. }
  26.  
  27. function drowHorisontalLine(ctx){
  28. /** Рисуем горизонтальную линию линию */
  29. let xFrom = initialValues.x - horisontalLineLength / 2;
  30. let y = initialValues.y - verticalLineLength / 2 - range / 2;
  31. ctx.moveTo(xFrom, y);
  32. let xTo = initialValues.x + horisontalLineLength / 2;
  33. ctx.lineTo(xTo,y);
  34. }
  35.  
  36. function drowVerticalLine(ctx, x){
  37. let yFrom = initialValues.y - verticalLineLength / 2 +range / 2;
  38. ctx.moveTo(x, yFrom);
  39. let yTo = initialValues.y + verticalLineLength / 2 + range / 2;
  40. ctx.lineTo(x, yTo);
  41. }
  42.  
  43.  
  44. function drowCanvas(){
  45. let canvas = document.getElementById('canvas');
  46. if (canvas.getContext)
  47. {
  48. const patternCanvas = document.createElement('canvas');
  49. patternCanvas.width = 400;
  50. patternCanvas.height = 400;
  51. const patternContext = patternCanvas.getContext('2d');
  52.  
  53. patternContext.strokeStyle = "#FFF";
  54. patternContext.lineWidth = LINE_WIDTH;
  55.  
  56. patternContext.beginPath();
  57. drowHorisontalLine(patternContext);
  58. drowVerticalLine(patternContext, initialValues.x - horisontalLineLength / 2 - range);
  59. drowVerticalLine(patternContext, initialValues.x + horisontalLineLength / 2 + range);
  60. patternContext.stroke();
  61.  
  62. let ctx = canvas.getContext('2d');
  63. ctx.clearRect(0, 0, canvas.width, canvas.height);
  64. const pattern = ctx.createPattern(patternCanvas, 'repeat');
  65.  
  66. let matrix = new DOMMatrix();
  67. pattern.setTransform(matrix.translate(pos.x, pos.y, 0));
  68.  
  69. ctx.fillStyle = pattern;
  70. ctx.fillRect(0, 0, canvas.width, canvas.height);
  71. }
  72. }
  73.  
  74. drowCanvas();
Advertisement
Add Comment
Please, Sign In to add comment