关于spriteFrame设置texture问题

  • Creator 版本:3.4.0 & 3.4.1

  • 目标平台: chrome

  • 重现方式:见附件DEMO

  • 首个报错:

  • 之前哪个版本是正常的: 2.4.x 一直正常

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统: win10

  • 重现概率:100%

一个2d sprite设置它的texture:
resources.load(resList, Texture2D, function(error, asset: Texture2D): void {

        if(!error){
           let sprite = thisSelf.node.getComponent(Sprite);
          sprite.spriteFrame = new SpriteFrame(); 
           sprite.spriteFrame.texture = asset;
        }

        else console.log(error.message);
    });

在2.4.x以来一直是正常的,现在升级到3.4.x,就显示不出来了,也没有报错什么的。

然后改成:
resources.load(resList, SpriteFrame, function(error, asset: SpriteFrame): void {

        if(!error){
            let sprite = thisSelf.node.getComponent(Sprite);              
           sprite.spriteFrame = asset;
        }
        else console.log(error.message);
    });

是正常显示出来;

两种方式的资源,都改成了对应的TYPE!!!

现在这边是需要第一种方式实现(因为是同时加载几张图,有些不需要SpriteFrame)。查文档也没发现什么差别!!现在不知是什么原因导致了。Demo.zip (1.5 MB)

resources 目录下的和这个差不多

assetManager.loadRemote(url, (err, data: ImageAsset) => {
    let spriteFrame = new SpriteFrame();
    this.texture = new Texture2D();
    this.texture.image = data;
    spriteFrame.texture = this.texture;
    this.sprite.spriteFrame = spriteFrame;
});

按你这个方法试过,也是显示不出来;

显示不出来,是不是别的原因,比如,摄像机 layer 等

   这些原因应该可以排除,因为加载成spriteFrame类型,是可以正常显示的,加载成texture或者你上面说的ImageAsset,就是显示不出来,其它都没变,只是加载类型不一样了。

  怀疑是加载出来的SpriteFrame和 new SpriteFrame()有差异,但是又没有文档或其它说明它们的区别。

(⊙o⊙)…
但我用上边的代码,是可以正常显示出来的·····

是用ImageAsset格式的代码,还是demo里的代码?
截图是我这边的效果:


updateSceneData 修改下;

这样修改有可以,原来spriteFrame赋值操作符做了处理!!!!

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。