【问题标题】:drawImage not showing an imagedrawImage 不显示图像
【发布时间】:2015-05-25 01:13:47
【问题描述】:
function render()
{
    canvasBackground.drawImage(images[0], 0, canvas.height / 2, canvas.width, canvas.height / 2);
}

function initImages(paths)
{
    requiredImages = paths.length;
    for (i in paths)
    {
        var img = new Image();
        img.src = paths[i];
        images[i] = img;
        images[i].onload = function ()
        {
            doneImages++;
        }
    }
}

function checkImages()
{
    if (doneImages >= requiredImages)
    {
        loop();
    }
    else
    {
        setTimeout(function ()
        {
            checkImages();
        }, 1);
    }
}

initImages(["picture.png"]);
checkImages();

我确实做到了,但没有任何显示,知道如何解决这个问题吗?

顺便说一句,我没有向您展示循环函数,而循环函数又运行渲染函数。

【问题讨论】:

  • 我也没有得到任何错误或任何东西,它只是没有出现。

标签: javascript html image canvas drawimage


【解决方案1】:

这是您的代码的重构版本。

它递增doneImages,直到等于paths.length(此时所有图像都已完全加载)。

然后在每个图像索引上调用render

顺便说一句,您的渲染功能会通过拉伸图像来扭曲图像。我认为这是故意的?

示例代码和演示:

var canvas=document.getElementById("canvas");
var canvasBackground=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;

var images=[];
var paths=[];
paths.push('https://dl.dropboxusercontent.com/u/139992952/multple/animated.gif');
paths.push('https://dl.dropboxusercontent.com/u/139992952/multple/ball1.png');

initImages(paths);

function render(i)
{
  canvasBackground.drawImage(images[i], 0, canvas.height / 2, canvas.width, canvas.height / 2);
}

function initImages(paths)
{
  var doneImages=0;
  for (i in paths)
  {
    var img = new Image();
    img.src = paths[i];
    images[i] = img;
    images[i].onload = function ()
    {
      // just return if all the images aren't loaded yet
      if(++doneImages<paths.length){return;}

      for(var i=0;i<images.length;i++){ render(i); }

    }
  }
}
body{ background-color: ivory; }
#canvas{border:1px solid red;}
&lt;canvas id="canvas" width=300 height=300&gt;&lt;/canvas&gt;

【讨论】:

  • 是的,我意识到问题不在于图像,而是画布被拉伸并使图像没有出现在我放置的位置。当我尝试使用 css 和 javascript 使画布“全屏”时,一切都搞砸了。
猜你喜欢
  • 2022-01-26
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2021-02-11
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多