#javascript #html #canvas
#javascript #HTML #холст
Вопрос:
Предполагается, что это приложение для рисования на JavaScript на сайте. Пользователи должны иметь возможность просто загружать сайт и рисовать на холсте. Прямо сейчас canvas не отвечает, несмотря на отсутствие сообщений об ошибках… кто-нибудь видит что-то не так? Возможно, я просто слишком новичок в этом.
// paint.js
(function () {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
//resizing
//canvas.height = window.innerHeight;
//canvas.width = window.innerWidth;
//variables
var painting = false;
function startPosition(e) {
painting = true;
draw(e);
}
function endPosition() {
painting = false;
context.beginPath();
}
function draw(e) {
if (!painting) return;
context.lineWidth = 7;
context.lineCap = "round";
context.strokeStyle = "green";
context.lineTo(e.clientX, e.clientY);
context.stroke();
context.beginPath();
context.moveTo(e.clientX, e.clientY);
}
//EventListeners
canvas.addEventListener("mousedown", startPosition);
canvas.addEventListener("mouseup", endPosition);
canvas.addEventListener("mousemove", draw);
})();
@charset "UTF-8";
/* CSS Document */
body {
text-wrap: wrap;
text-align: center;
background: #e0ebdd;
font-family: helvetica;
}
.nav {
width: 50%;
padding: 15px;
margin: auto;
text-align: center;
font-family: Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", Monaco, "Courier New", "monospace";
font-size: 20px;
color: black;
}
.nav a {
transition: 0.4s;
}
.nav a:hover {
color:#FFB52A;
font-style: italic;
padding: 10px;
transition: 0.2s;
}
.footer {
clear: both;
}
.info {
margin: auto;
width: 50%;
align-content: center;
text-align: center;
text-size: 16px;
}
.wavingHand {
float: left;
position: relative;
bottom: 100px;
left: 100px;
clear: right;
width: 100px;
padding: 50px;
}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>draw-and-listen</title>
<link href="grove.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>draw and listen</h1>
<div class="nav">
<a href="artists.html">artists</a>
<a href="draw-and-listen.html">draw and listen</a>
<a href="store.html">store</a>
</div>
<div>
<canvas id="canvas" height="480" width="640" style="border:1px solid #000000; background-color: white;">Please update your browser.</canvas>
<script src="paint.js"></script>
</div>
<a class="aHome" href="index.html"><img src="img/planet-green.png" style="float:right;width:42px;height:42px;" alt="home planet"></a>
<div>
<p style="clear: right;">© 2020</p>
</div>
</body>
</html>
Как ни странно, когда я запускаю его здесь, он, кажется, работает (хотя мышь смещена …), Но когда я просто запускаю HTML в Google Chrome, canvas не отвечает.
Комментарии:
1. Можете ли вы добавить фрагмент кода?
2. В вопросе должен быть код. На моем конце есть.
3. Разве вы этого не видите?
4. Я имел в виду, если вы можете добавить фрагмент кода, чтобы мы могли запустить код и увидеть результат.
5. Да, я вижу это, но я не могу его запустить.
Ответ №1:
На самом деле, ваш код работает, вы можете что-то записать в draw
функцию. Проблема заключается в координации (X, Y). В вашем случае вы можете установить для размера окна просмотра canvas и размера элемента canvas одинаковое значение, чтобы обеспечить неправильное положение мыши.
<canvas id="canvas" height="480" width="640" style="border:1px solid #000000; width: 640px; height:480px;"></canvas>
Комментарии:
1. Это имеет смысл, но, тем не менее, я нахожу, что положение мыши все еще выключено и работает только тогда, когда окно маленькое…