gpt4 book ai didi

javascript - 使用 html/js 的动画和随机化器

转载 作者:行者123 更新时间:2023-12-02 22:45:54 25 4
gpt4 key购买 nike

我有一页代码,其中我希望按下按钮时使用 math.random 将 3 个“ghost.png”显示在 Canvas 上,并具有随机坐标。除此之外,我还尝试使用另一个函数将“sac.jpg”绘制到 Canvas 上,并在由 math.random 确定的相同位置上绘制相同的幽灵。然后在同一函数中,我希望能够使用键盘上的箭头键对图像“sac.png”进行动画处理,而不使重影图像随之移动。带着这个目标,我尝试创建一个代码,但它似乎不起作用。有人可以解释一下吗?

回顾:功能 hasard(按下按钮时激活):a) math.random 6次选择同一张图像的3个x,y坐标b) 将图像放入变量中

功能设计器(按下箭头键时激活):a) 绘制背景b)每次从函数 hasard 在同一位置绘制图像,直到我按下第一个函数中的按钮以随机化一对新坐标。c) 绘制图像“sac.gif”并对其进行编程,使其能够使用箭头键移动。

<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="Jeu.css">
</head>
<body>

<canvas id="canvas" width="400" height="400"
style="border-color: 'black'; border-width: 3px; border-style: solid">
</canvas>
<br>
<button type="button"onclick="hasard()"><img src="start.jpg"></button>

<script type="text/javascript">

var canvas = document.getElementById("canvas");
var contexte = canvas.getContext("2d");
var x;
var y;
var x1;
var y1;
var x2;
var y2;

var ghost = new Image();
ghost.src = "ghost.png";

function hasard(){
x = 32 +(Math.random() * (400-64));
y = 32 +(Math.random() * (400-64));
x1 = 32 +(Math.random() * (400-64));
y1 = 32 +(Math.random() * (400-64));
x2 = 32 +(Math.random() * (400-64));
y2 = 32 +(Math.random() * (400-64));

contexte.drawImage(ghost,x,y,60,60)
contexte.drawImage(ghost,x1,y1,60,60)
contexte.drawImage(ghost,x2,y2,60,60)
};

var bg = new Image();
bg.src = 'haunted.jpg';

var sac = new Image();
sac.src = "sac.gif";

var a=100;
var b=100;
var dx=0;
var dy=0;

T_fleche_gauche = 37;
T_fleche_droite = 39;
T_fleche_haut = 38;
T_fleche_bas = 40;

document.onkeydown = miseAJourTouche;

function miseAJourTouche(e){

toucheCourante = e.keyCode;

if (toucheCourante == T_fleche_gauche){
dx= -1;
dy=0;
draw(dx,dy);
}
if (toucheCourante == T_fleche_droite){
dx= 1;
dy=0;
draw(dx,dy);
}
if (toucheCourante == T_fleche_haut){
dy= -1;
dx=0;
draw(dx,dy);
}
if (toucheCourante == T_fleche_bas){
dy= 1;
dx=0;
draw(dx,dy);
}
}

function dessiner(x,y){

bg.addEventListener('load', function() {

contexte.drawImage(bg, 100, 20, 200, 200);

image.onload = function(){
contexte.drawImage(ghost,x,y,60,60)
contexte.drawImage(ghost,x1,y1,60,60)
contexte.drawImage(ghost,x2,y2,60,60)

image.onload = function(){

context.drawImage(sac, 0, 0, 70,90);
context.translate(10+a,10+b);

a = a+dx;
b = b+dy;

if (a > 400) a = -80; if (a <-80) a = 400;
if (b > 400) b = -40; if (b <-40) b = 400;
}
window.requestAnimFrame(function() { dessiner(dx,dy) });
}
dessiner();
};
</script>
</body>
</html>

最佳答案

据我所知,您正在尝试为幽灵和袋子设置动画,而袋子是玩家可控制的元素。

虽然我无法为您调试程序,但我可以帮助告诉您使用浏览器的开发工具。 F12Fn + F12 将带您进入检查器,其中其他选项卡之一是控制台。

现在,在您的程序中,我看到您将 image.onload 分配给两个函数,其中一个缺少右大括号。

image.onload = function(){
contexte.drawImage(ghost,x,y,60,60)
contexte.drawImage(ghost,x1,y1,60,60)
contexte.drawImage(ghost,x2,y2,60,60)

image.onload = function(){

context.drawImage(sac, 0, 0, 70,90);
context.translate(10+a,10+b);

a = a+dx;
b = b+dy;

if (a > 400) a = -80; if (a <-80) a = 400;
if (b > 400) b = -40; if (b <-40) b = 400;
}

我会在对 contexte.drawImage 的三次调用之后添加一个大括号,但我对两次分配的选择表示怀疑。另外,我不认为 image 在此范围内声明,但我可能是错的。这就是我所看到的。

关于javascript - 使用 html/js 的动画和随机化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com