好的,我有两个版本的代码。第一个似乎可以正常工作(大部分),第二个可以给我主题名称中的Uncaught Error。

defs:

var VID_WID = 640;
var VID_HIGH = 360;
var OUT_WID = 480;
var OUT_HIGH = 320;
var NUM_WID = 3;
var NUM_HIGH = 3;


var TILE_WIDTH = VID_WID / NUM_WID;
var TILE_HEIGHT = VID_HIGH / NUM_HIGH;
var OUT_WIDTH = OUT_WID / NUM_WID;
var OUT_HEIGHT = OUT_HIGH / NUM_HIGH;

Working:
    tile.sx = x*TILE_WIDTH;
    tile.sy = y*TILE_HEIGHT;
    tile.dx = x*OUT_WIDTH;
    tile.dy = y*OUT_HEIGHT;
...
    draw.drawImage(copycanvas, tile.sx, tile.sy,
        TILE_WIDTH, TILE_HEIGHT,
        tile.dx, tile.dy,
        OUT_WIDTH, OUT_HEIGHT);

Gets Exception:
    tile.sx = x;
    tile.sy = y;
    tile.dx = x;
    tile.dy = y;
...
    draw.drawImage(copycanvas, tile.sx*TILE_WIDTH, tile.sy*TILE_HEIGHT,
        TILE_WIDTH, TILE_HEIGHT,
        tile.dx*OUT_WIDTH, tile.dy*OUT_HEIGHT,
        OUT_WIDTH, OUT_HEIGHT);


我所看到的唯一区别是,我在哪里乘以WIDTH和HEIGHT参数。但是其中一项有效,而另一项例外。

我想使用后面的代码,因此我可以直接对x组合.sx和.dx的x和y值,而不是sx / TILE_WIDTH == dx / OUT_WIDTH。我想我总是可以再添加几个字段来重复这些工作,但是看来我不必这样做。

知道为什么一个有效而另一个无效吗?

最佳答案

首先请看下面的图片。

我也得到了相同的错误代码。
在我的情况下,“源图像”的大小为640 x 480。
我为sx,sy参数分配了10,10,为sWidth,sHeight参数分配了640,480。
然后我得到了与您相同的错误代码。

由于sx,sy参数将捕获窗口移动了10,10像素,
sWidth,sHeight窗口超出范围。

在我的想法中,由于没有要引用的数据,导致了INDEX_SIZE_ERROR。
,我将超大的sWidth设置为sHeight。



drawImage(image,sx,sy,sWidth,sHeight,dx,dy,dWidth,dHeight)

关于javascript - javascript Canvas 未捕获的错误:INDEX_SIZE_ERR:DOM异常1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3571279/

10-11 00:58