javascript - Canvas 背景图像位于第二个绘制图像的顶部

标签 javascript html canvas onload

我在 Canvas 中设置了背景图像;这是一张 map 。

然后我想在 map 顶部的各个点上“绘制”红色图钉图像。现在在 Chrome 中,我用上下文“绘制”的第一个图钉出现在背景 map 下方。

我在 Firefox/IE 中没有看到这种行为。

我的最终目标是我希望引脚能够交互(onMouseOver/onClick/等)。我是否应该使用 Canvas 元素来执行此操作?

参见下面的代码:

<canvas id="backgroundMapCanvas" width="990" height="691" style="border:1px solid #d3d3d3;">
</canvas>

<script type="text/javascript">
    var context = document.getElementById("backgroundMapCanvas").getContext("2d");

    var bgImage = new Image();
    bgImage.src = "images/mapBackground.jpg";

    bgImage.onload = function() {
        context.drawImage(bgImage, 10, 10);
    };

    var firstPin = new Image();
    firstPin.src = "images/redPin.png";

    firstPin.onload = function() {
        context.drawImage(firstPin, 830, 420);
    };
</script>

谢谢

V

最佳答案

无法保证加载顺序,因为它取决于图像的大小、服务器等,因此您需要强制执行正确的顺序,这可以通过跟踪所有图像的加载状态来完成,然后然后绘制按您想要的顺序排列图像:

  • 共享负载处理程序
  • 使用计数器
  • 加载完所有图像后进行绘制。

示例:

var bgImage = new Image();
var firstPin = new Image();
var count = 2;

bgImage.onload = loader;
firstPin.onload = loader;

bgImage.src = "images/mapBackground.jpg";
firstPin.src = "images/redPin.png";

function loader() {
    if (!--count) draw();   // draw when both has loaded
}

function draw() {
    context.drawImage(bgImage, 10, 10);
    context.drawImage(firstPin, 830, 420);
}

关于javascript - Canvas 背景图像位于第二个绘制图像的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30009326/

相关文章:

c++ - 加载非标准字体并在 QTextDocument 中显示它们

Android:使用 drawText() 书写时文本不可见

html - Meteor:如何获取 HTML5 Canvas 元素的上下文

javascript - HTML5 捕获和保存视频

javascript - 我正在尝试在提交时自动聚焦到下一个文本输入

javascript - ajax 发布到 php 并检索 sql 结果

java - drawColor 上的 Android 空指针异常

javascript - 导航栏是垂直的而不是水平的

html - 菜单中事件标签的 css 特异性

chrome 中分区内分区的 css 样式