gpt4 book ai didi

javascript - 在窗口调整大小时更新 Canvas 动画宽度

转载 作者:行者123 更新时间:2023-12-03 01:48:09 24 4
gpt4 key购买 nike

不知道如何实现这一点。我有正确的函数触发,但当谈到为什么逻辑无法运行我的脚本时我迷失了。我有一个 console.log 来显示变量正在更新,但动画宽度不会随之更新。

Javascript

$( document ).ready(function() {


var imgTag = new Image();
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var x = canvas.width;
var y = 0;

imgTag.onload = animate;
imgTag.src = "http://foodhall.hellogriptest.com/hh/assets/medallion-bounce.png";



var h = window.innerHeight;
var w = window.innerWidth;

canvas.height = h;
canvas.width = w;


//moving image
var mover = {
x: 0,
y: 0,
width: 100,
height: 100,
color: '#000',
down: true,
right: true
}

function animate() {
clear();
render();
rID = requestAnimationFrame(animate);
}

function clear() {
context.clearRect(0, 0, canvas.width, canvas.height);
}

function render() {
//set direction
if (mover.down && mover.y >= h - mover.height)
mover.down = false;

if (!mover.down && mover.y <= 0)
mover.down = true;

if (mover.right && mover.x >= w - mover.width)
mover.right = false;

if (!mover.right && mover.x <= 0)
mover.right = true;

//make move
if (mover.right)
mover.x += 6;
else
mover.x -= 6;

if (mover.down)
mover.y += 6;
else
mover.y -= 6;

//drawRectangle(mover);
drawImage(mover);

}

function drawImage(mover) {
context.drawImage(imgTag, mover.x, mover.y); // draw image at current position
}

window.onresize = function() {
W = window.innerWidth;
H = window.innerHeight;
canvas.width = W;
canvas.height = H;
x = W;
console.log(x);
clear();
render();
drawImage(mover);
}


});//ready

代码笔— https://codepen.io/alcoven/pen/KROPrK

最佳答案

这是一个简单的修复。在脚本的开头,您将小写 w 和小写 h 设置为窗口的宽度和高度,但在调整大小函数中,您设置 W = window.innerWidth。然后创建大写的 W 变量并分配innerWidth。小写的 w 变量仍然作为原始宽度存在,这就是您的渲染所使用的。

关于javascript - 在窗口调整大小时更新 Canvas 动画宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50537171/

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