我想根据按键操作来更改红色圆圈的位置,但我收到错误,我是初学者,所以我不知道我在做错了什么。
我希望那些红色圆圈在一段时间后消失,这就是为什么我把超时代码放在一起,我希望它们出现在图像上。
有人可以帮忙吗?我确信这是一个2分钟的修复,但我不擅长编码。
<html>
<head>
<title>Page Title</title>
<style>
body {
background-image: url("violin.jpg");
background-size: 2500px 1300px;
<canvas id="myCanvas" width="1024" height="768"></canvas>
}
</head>
</style>
<img id="bow" src="bow.jpg" style="display:none;" />
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
window.addEventListener("keydown", soundPlay);
function fillRed() {
ctx.fillStyle = "red,";
ctx.fill();
}
function keyQ() {
ctx.beginPath();
ctx.arc(500, 500, 30,0, Math.PI*2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyW() {
ctx.beginPath();
ctx.arc(300, 300, 40,0, Math.PI*2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyE() {
ctx.beginPath();
ctx.arc(900, 500, 20,0, Math.PI*2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyR() {
ctx.beginPath();
ctx.arc(950, 100, 20,0, Math.PI*2);
ctx.fillStyle = "red";
ctx.fill();
}
///var x = event.keyCode;
<input type="text" onkeydown="pressedKey(event)">
**THE ERROR I AM HAVING IS HERE**
function pressedKey(event) {
var x = event.keyCode;
if (x == 27) { // 27 is the ESC key
alert ("You pressed the Escape key!");
} else if (x == 81) {
keyQ();
var sound = new Audio('1.mp3');
sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 87) {
keyW();
var sound = new Audio("2.mp3");
sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 69) {
keyE();
var sound = new Audio("3.mp3");
sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 82) {
keyR();
var sound = new Audio("4.mp3");
sound.play();
setTimeout(fillRed, 200);
}
}
</script>
}
<body></body>
</html>
答案 0 :(得分:1)
Demis,
此代码有一些不正确之处:
干杯
答案 1 :(得分:0)
标记中存在严重错误,表明(正如您承认的那样)您需要基本学费。
很高兴您尝试进行Web开发,我们都必须从某个地方开始,但我的建议是您在尝试运行之前学会走路。
我建议您先了解a gentle walkthrough course at w3schools以了解如何构建网页的基础知识,然后再了解自己要填写的内容。
如果您对如何构建网页有很好的理解,那么您可以继续进行更复杂的编码和more thorough documentation。
以下代码的某些部分已被注释掉,因为它们根本无法在本网站中嵌入,但它们可能在您自己的开发环境中工作(只要存在所需的资源)。
您可能会注意到我已将<script>
移至<canvas>
以下,以便在JavaScript尝试使用之前<canvas>
已存在。
通过阅读the MDN documentation about document.readyState
中给出的示例,您可以了解更多有关此问题的信息
在尝试使用DOM之前,还有其他方法可以检测DOM的准备情况,这样<script>
可以保留在<head>
中,但为了简单和简洁,我选择简单地移动它。
至于你的fillRed()
功能,如果想法是
......那些红色圆圈会在一段时间后消失,这就是为什么我把超时代码...
这段代码远远没有达到你所希望的程度
MDN(Mozilla开发者网络)有an indepth <canvas>
tutorial on their site,可帮助您了解基础知识和一些更高级的内容。
<html>
<head>
<title>Page Title</title>
<style>
body {
/*background-image: url("violin.jpg"); file not available on SO*/
background-size: 2500px 1300px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="1024" height="768"></canvas>
<!-- <img id="bow" src="bow.jpg" style="display:none;"> not displayed -->
<input type="text" onkeydown="pressedKey(event)">
<script>
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
//window.addEventListener("keydown", soundPlay); // soundPlay is not defined
function fillRed() {
ctx.fillStyle = "red"; // this will not make the circle disappear
ctx.fill();
}
function keyQ() {
ctx.beginPath();
ctx.arc(500, 500, 30, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyW() {
ctx.beginPath();
ctx.arc(300, 300, 40, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyE() {
ctx.beginPath();
ctx.arc(900, 500, 20, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.fill();
}
function keyR() {
ctx.beginPath();
ctx.arc(950, 100, 20, 0, Math.PI * 2);
ctx.fillStyle = "red";
ctx.fill();
}
function pressedKey(event) {
var x = event.keyCode;
if (x == 27) { // 27 is the ESC key
alert("You pressed the Escape key!");
} else if (x == 81) {
keyQ();
//var sound = new Audio('1.mp3'); // requires file not available on SO
//sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 87) {
keyW();
//var sound = new Audio("2.mp3"); // requires file not available on SO
//sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 69) {
keyE();
//var sound = new Audio("3.mp3"); // requires file not available on SO
//sound.play();
setTimeout(fillRed, 200);
} else if (event.keyCode == 82) {
keyR();
//var sound = new Audio("4.mp3"); // requires file not available on SO
//sound.play();
setTimeout(fillRed, 200);
}
}
</script>
</body>
</html>