gpt4 book ai didi

javascript - onload 与 onLoad(区分大小写)

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:49 30 4
gpt4 key购买 nike

我在网页中有 2 个函数 (js) 用于将图像附加到 Canvas 元素:

 function attachImage(tile, x, y)
{
base_image = new Image();
base_image.src = 'Images/tiles/'+(tile-1)+'.png';
base_image.onload = function(){
context.drawImage(base_image, 32*x,32*y);
}
}

我从字面上复制并粘贴它并将其复制到另一个 Canvas 上

  function attachImage2(tile2, x2, y2)
{
base_image2 = new Image();
base_image2.src = 'Images/tiles/'+(tile2-1)+'.png';
base_image2.onLoad = function(){
context2.drawImage(base_image2, 32*x2,32*y2);
}
}

在 firefox 上,如果我制作一个 onload 和另一个 onLoad,那么它工作正常。但无论我为 chrome 做什么,它都无法正确加载图像。

编辑:这是 firefox 和 chrome 之间的图像比较:

火狐:http://imgur.com/JaEgy

Chrome :http://imgur.com/VJc6q

最佳答案

您应该使用onload(小写)。

一些一般说明

  • 当你需要局部变量时使用var
  • 您应该在实际设置 src 之前设置 onload,否则(对于缓存)图像 onload可能不会被调用。
  • 因为你的方法做同样的事情,你应该只使用一个,并将上下文作为参数传递

所以

<script>
var canvas = document.getElementById('map');
context = canvas.getContext('2d');

var canvas2 = document.getElementById('map2');
context2 = canvas2.getContext('2d');

function attachImage(tile, x, y, canvasContext)
{
var base_image = new Image();
base_image.onload = function(){
canvasContext.drawImage(base_image, 32*x,32*y);
}
base_image.src = 'Images/tiles/'+(tile-1)+'.png';
}
</script>

而且你不应该为每个调用创建一个script标签

<?php
echo("<script>");
for($tr = 0; $tr < count($mapArray)-1; $tr++) {
for($tc = 0; $tc < count($mapArray[$tr])-1; $tc++) {
$tile = $mapArray[$tr][$tc];
echo "attachImage(" . $tile . "," . $tc . "," . $tr . ",context);";
}
}

for($tr = 0; $tr < count($mapArrayy)-1; $tr++) {
for($tc = 0; $tc < count($mapArrayy[$tr])-1; $tc++) {
if($mapArrayy[$tr][$tc]!=0){
echo "attachImage(" . $mapArrayy[$tr][$tc]. "," . $tc . "," . $tr . ",context2);";
}
}
}
echo("</script>");
?>

关于javascript - onload 与 onLoad(区分大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115377/

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