Cc.loader.load() 如何实现跨域资源的加载?

cc.loader.load(“http://”, function(){
});

这样会不行,怎样才可以跨域呢?

1赞

补充一下需求,我有一个 TexturePacker 的资源,需要放在CDN静态服务器上。使用 cc.loader.load 不能跨域,如何解决?

如果在同域服务端做一个转发,就达不到CDN的效果了吧。

var self = this;
var url = "xxxxxx";
cc.loader.loadImg(url, {isCrossOrigin : true }, function(err,img){
    var logo  = new cc.Sprite(img);
     self.addChild(logo);
}); 

使用canvas渲染,然后按上述代码可以跨域加载图片。至于你用的是cc.loader.load(),而不是loadImg,但我觉得应该也一样,毕竟load的方法里,第二个参数也是option
{Image} loadImg(url, option, callback)
{cc.AsyncPool} load(resources, option, loadCallback)

thinks~

我现在的方案是,把服务器的跨域打开 Access-Control-Allow-Origin:* 先这样做好了。


下面的代码是拿微博头像的,配置了 {isCrossOrigin: true} 一样拿不到。

cc.loader.loadImg("http://ww3.sinaimg.cn/mw690/ab41dfeegw1emxsjnhwcnj205k05kt8w.jpg", {isCrossOrigin: true}, function (err, data) {

})

我用你的代码是可以拿的,不过得用sprite,imageView就无法显示

你用的什么版本啊? 我是 cocos2d-js-v3.13-lite.js

你直接用loadimg cross domain
在android和ios是正常的
在html会不正常
如果是你自己的服务器的图片,开一个
Control-Allow-Origin:*
如果不是
那你只能访问自己服务器再转发