loadremote无法加载nodejs express的图片

需求是要动态加载存在服务端的一张图片,我试了下面两种方式都失败了,求助大佬们。

  1. 最终的服务端环境是nodejs express,服务端用sendFile来传输图片。于是把GET的url写在了loadRemote的url里,发请求,也成功的收到了东西,但返回是cc.Asset,不知道怎么把这个cc.Asset变成spriteFrame从而可以附到node的spriteFrame上。其实我也不知道这个返回的cc.Asset内容是否正确,因为无法图形化的看到。

  2. 然后,因为nodejs这个服务器,通过浏览器直接访问图片地址是无法直接打开图片的,我想那就换个简单的服务器,这样把过程弄得简单点,以免错在哪里自己都不知道。所以就弄了一个可以通过浏览器直接访问图片的apache,然后把图片地址直接作为url用loadRemote加载,结果还是不行。出现Error: download failed: http://127.0.0.1/test.png, status: 0(error)的报错。

这我就不是很理解了,这不是最简单的loadRemote的使用方式么?这是啥问题?

补充更新:Creator 2.4.8

本想贴代码文本,但是格式很奇怪,还是上图算了,看得清楚些
image

http://127.0.0.1/test.png在浏览器中访问的到吗

1、function(err,texture)改成(err,texture)=>
2、…setTexture(texture)
这样试试

是的,可以访问打开图片

改了下,还是报一样的错
Error: download failed: http://127.0.0.1/test.png, status: 0(error)

刚才写了个测试的html,成功的通过nodejs的sendFile收到了图片并显示出来了。也就是说至少服务端这边算是工作正常,就是不知道sendFile这个方式和cocos creator是不是能结合起来。

    cc.assetManager.loadRemote('http://192.168.1.19:3333/yueka_di.png', (err, res: cc.Texture2D) => {
        if (err) {
            console.error("加载错误,Function:loadRemote",res)
            // reject(null)
            return
        }
        let sprite = this.getNode('test').getComponent(cc.Sprite)
        if (sprite) {
            sprite.spriteFrame = new cc.SpriteFrame(res)
        }
    })

还是不行,依然 status: 0(error)
image
注:我那个节点本来就放了个图,所以没写那个if

自己照着排查下,这个代码我测通了的

你的是什么版本?我的是2.4.8,而且我这里没有this.getNode这个方法,是版本区别造成的问题?

this.getNode是我框架封装的函数。。。

擦…不过,anyway,反正还没通。。。

我从apache,就是可以直接浏览器打开图片的环境里,依然是status: 0(error)

从nodejs express环境里,得到的texture是下面这个样子,其中第一行那个nativeAsset,就是图片了,但就是没法子把它赋给spriteFrame啊啊啊啊啊!大佬这个关有办法过么?

依然status:0 error,我麻了

继续攻关这个问题

这样试试?

我怎么写出来这样?是cocos版本不同么?你这个应该是官方说明文档,是在哪个版本上的啊?

@jare 手动at官方,Jare大佬能帮忙看一下么?

尴尬,看了3.x版本的