跨域加载图片,在WebGL模式下无法绘制

cocos2d-js 3.1

在ios8,safari中也无法绘制

错误提示如下:
Uncaught SecurityError: Failed to execute ‘texImage2D’ on ‘WebGLRenderingContext’: The cross-origin image at http://thirdapp2.qlogo.cn/qzopenapp/02421c7a7300de78a00ae84d5a6426f74b6ed3cb61b109f141b8ce9f603eee15/50 may not be loaded.

调用代码:
cc.loader.loadImg(faceurl, {isCrossOrigin : false }, function(err, img){
var texture2d = new cc.Texture2D();
texture2d.initWithElement(img);
texture2d.handleLoadedTexture();
var sprite = new cc.Sprite(texture2d);
sprite.x = this.width / 2 - 2;
sprite.y = this.height / 2 + 4;
sprite.scale = 1.5;
this.addChild(sprite);
Ltc.addSpriteChild(this, res.LaunchFaceBg_png, this.width / 2, this.height / 2);
}.bind(faceBg));

报错位置:
// TexturesWebGL.js
handleLoadedTexture: function () {

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, self._htmlElementObj);

从网络请求数据可以看到图片已经下载下来了

cc.loader.loadImg(faceurl, {isCrossOrigin : false }, function(err, img)
{
            var sprite = new cc.Sprite(faceurl);
            sprite.x = this.width / 2 - 2;
            sprite.y = this.height / 2 + 4;
            sprite.scale = 1.5;
            this.addChild(sprite);
            Ltc.addSpriteChild(this, res.LaunchFaceBg_png, this.width / 2, this.height / 2);
        }.bind(faceBg));

当成功下载图片后,直接使用该 url 建立 cc.Sprite 就可以了。

同求 canvas可以访问
webgl不能访问

这是引擎的一个小bug 需要修改一下源码

高手啊

怎么改??
求解

webgl怎么访问啊????
spine效果只有在webgl上才正常一点。

图片跨域访问,需要设置图片服务器的头信息(Access-Control-Allow-Origin)
参考 http://blog.csdn.net/steinadler/article/details/40588591

这个是需要搭建一个图片服务器才行吧

如果用阿里云的OSS的话 就不行了,

用起来还是很麻烦的,,而且webgl那个应该不只是跨域问题,
canvas 中是可以解决跨域的

但是canvas的话,如果到安卓或者ios里调试跨域就会出错。

请问如何修改源码达到跨域获取网络图片呢。。。

关注此问题的后续发展

同问这个问题。

我也在问这个问题。!