JCanvas.createPattern随机返回' Null'而不是实际的模式

时间:2014-03-29 22:38:57

标签: javascript jquery web return jcanvas

现在我的整个项目太大而无法复制和粘贴,但这是我现在正在做的基本细分:

$(document).ready(function(){
var canvas = $('#Canvas');
var data = {source: "images\pattern.png", repeat: "repeat"} ;
var pattern = canvas.createPattern(data); //Returns 'Null' at random
});

到目前为止我看过的事情:

  • 加载时间(有些相关,当页面加载速度更快时,它似乎会更频繁地破坏)
  • 加载订单(似乎没有关联)
  • 预先通过强制将图像压缩到页面上的图像来预加载图像(不解决)
  • 使用Image()预加载它并将图像路径传递给Image()。src(也不修复它)
  • 将Image()作为data.source而不是字符串路径传递(可能只是帮助了一点)
  • 事先进入JCanvas(似乎没有功能存在)
  • 尽早或尽可能晚地创建模式(似乎更改频率,但不是很多)

它似乎有自己的想法,我无法弄清楚我做错了什么。任何人都知道我做错了什么?

-Edit1 -

现在通过Jcanvas源进行调试,我认为它与上下文有关。我有什么方法可以预加载画布上下文吗?

-Edit2 -

忘记我所说的关于背景的一切,我想我已经弄明白了。

 //JCanvas source
 [...]
 else {
// Use URL if given to get the image
img = new Image();
img.crossOrigin = params.crossOrigin;
img.src = source; //<-- source is the url of my image ("images\pattern.png")
}

// Create pattern if already loaded
if (img.complete || imgCtx) { 
    onload(); //<-- When this runs, the image pops up perfectly fine
} else {
    img.onload = onload(); //<-- This is what causes the problem, 
                           //onload never seems to actually run 

            // Fix onload() bug in IE9
    img.src = img.src;
    }

img.onload事件应该在图像加载后直接发生,但似乎永远不会发生。

0 个答案:

没有答案