Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用HTML5Canvas和JS制作响应性角色_Javascript_Jquery_Html_Canvas - Fatal编程技术网

Javascript 如何使用HTML5Canvas和JS制作响应性角色

Javascript 如何使用HTML5Canvas和JS制作响应性角色,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,根据本教程,我使用HTML5画布和Javascript创建了一个角色: 尽管我现在正在努力使角色具有响应性,但我已经尝试了以下方法: function resize(){ $("#canvasDiv").outerHeight($(window).height()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerHeight(true) - $("#canvasDiv").outerHeight())); }

根据本教程,我使用HTML5画布和Javascript创建了一个角色:

尽管我现在正在努力使角色具有响应性,但我已经尝试了以下方法:

function resize(){    
  $("#canvasDiv").outerHeight($(window).height()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerHeight(true) - $("#canvasDiv").outerHeight()));
}

$(document).ready(function(){
  var myWidth = $(window).width()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerWidth(true) - $("#canvasDiv").outerWidth());
  var myHeight = $(window).height()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerHeight(true) - $("#canvasDiv").outerHeight());
  prepareCanvas(document.getElementById("canvasDiv"), myWidth, myHeight);
  $(window).on("resize", function(){     
  var newWidth = $(window).width()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerWidth(true) - $("#canvasDiv").outerWidth());
  var newHeight = $(window).height()-$("#canvasDiv").offset().top- Math.abs($("#canvasDiv").outerHeight(true) - $("#canvasDiv").outerHeight());
  $( "#canvasDiv" ).empty();
  prepareCanvas(document.getElementById("canvasDiv"), newWidth, newHeight);
  });
});
但这似乎只是剪切图像,而不是调整其大小


这是一个演示:

这是因为您只是调整画布的大小,其中的图像保持不变,因此超出了画布的范围。需要使用“缩放”功能按当前宽度和高度除以所需的宽度和高度来缩放画布上的场景:

context.scale(x, y); // Where x and y are ratios (1 being 100%).
需要考虑的事项:

  • 如果你想保持纵横比?如果是这样,则需要使用最小宽度或高度比
  • 如果你想扩大规模,超过100%

  • 这是因为您只是调整画布的大小,其中的图像保持相同的大小,因此超出了画布的边界。需要使用“缩放”功能按当前宽度和高度除以所需的宽度和高度来缩放画布上的场景:

    context.scale(x, y); // Where x and y are ratios (1 being 100%).
    
    需要考虑的事项:

  • 如果你想保持纵横比?如果是这样,则需要使用最小宽度或高度比
  • 如果你想扩大规模,超过100%