cocos creator加载远程图片问题

  • Creator 版本:2.3.1

  • 目标平台: Web

  • 详细报错信息,包含调用堆栈:

TypeError: Cannot read property ‘setTexture’ of null
at Test. (d:\cocos_program\graduate\assets\script\Test.js:51:32)
at http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:34778:32
at http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:45345:11

  • 编辑器操作系统 :win10

  • 额外线索:

服务器用的是node.js及express框架,在浏览器中输入“http://localhost:3000/image”后会显示图片“1.png”,但是在Chrome中显示乱码,在火狐中正确显示

服务器端代码为:

var express=require(‘express’);
var app=express();
var http=require(‘http’).Server(app);

app.use(express.static(__dirname+’/public’));

app.all(’’, function(req, res, next) {
res.header(“Access-Control-Allow-Origin”, "
");
res.header(“Access-Control-Allow-Headers”, “X-Requested-With”);
res.header(“Access-Control-Allow-Methods”,“PUT,POST,GET,DELETE,OPTIONS”);
res.header(“X-Powered-By”,’ 3.2.1’)
res.header(“Content-Type”, “application/json;charset=utf-8”);
next();
});

http.listen(3000,function(){
console.log(‘listening on:3000’);
});

app.get(’/’, function (req, res) {
console.log(“主页 GET 请求”);
res.send(‘Hello GET’);
})

app.get(’/image’, function(req, res) {
res.sendfile(__dirname + ‘/1.png’);
})

客户端代码为:

cc.Class({
extends: cc.Component,

properties: {
    pictureNode:cc.Node,    
},
onClickPicture:function(){
        var sprite = this.pictureNode.addComponent(cc.Sprite);
    cc.loader.load("http://127.0.0.1:3000/image"+ "?aa=aa.png",function(err, ret) {
        if(err) {
            console.log(err);
            return;
        }
        // ret is cc.Texture2D这样对象
        console.log("这是ret的值"+ret);
        console.log("这是ret的类型"+typeof ret);
        sprite.spriteFrame.setTexture(ret);
        this.pictureNode.setContentSize(ret.getContentSize()); // 使用这个图片的大小
        // end 
    }.bind(this));
},

});

自己顶顶

这样子写,不加setContentSize ,图片显示不出来,感觉像是bug