首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onload vs onLoad (区分大小写)

onload vs onLoad (区分大小写)
EN

Stack Overflow用户
提问于 2012-10-29 11:00:49
回答 1查看 1.3K关注 0票数 2

我在网页中有两个函数(js),用于将图像附加到画布元素:

代码语言:javascript
复制
 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);
      }
    }

我真的把它复制粘贴到另一张画布上

代码语言:javascript
复制
  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);
      }
    }

在火狐上,如果我做了一个onload和另一个onLoad,那么它工作得很好。但是无论我为chrome做什么,它都不能正确地加载图像。

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

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

CHROME:http://imgur.com/VJc6q

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 11:16:30

您应该使用onload (小写)。

一些一般说明

当您需要局部变量时使用var.

  • You时
  • 应在实际设置onload之前设置src,否则(对于缓存的)图像可能无法调用onload
  • 由于您的方法做的是相同的事情,因此您应该只使用一个,并将上下文作为参数

传递

所以

代码语言:javascript
复制
<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标记

代码语言:javascript
复制
<?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>");
?>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13115377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档