Canvas 结构集(';src';,url)不工作,但setSrc(url)工作

Canvas 结构集(';src';,url)不工作,但setSrc(url)工作,canvas,fabricjs,Canvas,Fabricjs,我有这两行代码- canvas.item(0).set('src',url);canvas.renderAll() canvas.item(0).setSrc(url);canvas.renderAll() 因此,存在一个已存在的画布,其中在第0层加载了一个图像。所以当我使用Solution1时,它应该会改变图像。但它没有反映。当我尝试console.log(canvas.item(0))时,它在对象数组中显示设置为src属性的url,但它从不反映。然后,当我使用Solution2时,它就起作用

我有这两行代码-

  • canvas.item(0).set('src',url);canvas.renderAll()
  • canvas.item(0).setSrc(url);canvas.renderAll()
  • 因此,存在一个已存在的画布,其中在第0层加载了一个图像。所以当我使用Solution1时,它应该会改变图像。但它没有反映。当我尝试
    console.log(canvas.item(0))
    时,它在
    对象数组中显示设置为
    src
    属性的
    url
    ,但它从不反映。然后,当我使用Solution2时,它就起作用了。但即便如此,它还是有马车。我必须运行Solution2两次&然后它就会显示出来。有什么问题吗?

    用于更改接受回调的image对象的源,然后渲染画布。因此,您无需再次调用
    setSrc

    演示

    var canvas=newfabric.canvas('editorCanvas'{
    背景颜色:“白色”,
    宽度:300,
    身高:300
    });
    var图像对象;
    fabric.Image.fromURL('https://picsum.photos/200/200,函数(img){
    img.set({width:200,height:200,scaleX:1,scaleY:1})
    imageObject=img;
    canvas.add(img);
    },{交叉原点:'annonymous'});
    var i=0;
    函数changeSrc(){
    var url='1〕https://picsum.photos/200/200?random='+++i;
    setSrc(url,函数(){
    canvas.requestRenderal();
    },{交叉原点:'annonymous'})
    }
    画布{
    边框:1px实心;
    }
    
    变更
    添加过滤器
    用于更改图像对象的源,该对象接受回调,从而呈现画布。因此,您无需再次调用
    setSrc

    演示

    var canvas=newfabric.canvas('editorCanvas'{
    背景颜色:“白色”,
    宽度:300,
    身高:300
    });
    var图像对象;
    fabric.Image.fromURL('https://picsum.photos/200/200,函数(img){
    img.set({width:200,height:200,scaleX:1,scaleY:1})
    imageObject=img;
    canvas.add(img);
    },{交叉原点:'annonymous'});
    var i=0;
    函数changeSrc(){
    var url='1〕https://picsum.photos/200/200?random='+++i;
    setSrc(url,函数(){
    canvas.requestRenderal();
    },{交叉原点:'annonymous'})
    }
    画布{
    边框:1px实心;
    }
    
    变更
    添加过滤器

    谢谢你,伙计。。回调是关键。。在“DEMO”中的callbackSince内移位了
    canvas.renderAll()
    ,两个图像URL除了随机因素外是相同的,代码实际上不会反映画布上的图像更改,直到添加
    img.set('dirty',true)内部回调。谢谢你。。回调是关键。。在“DEMO”中的callbackSince内移位了
    canvas.renderAll()
    ,两个图像URL除了随机因素外是相同的,代码实际上不会反映画布上的图像更改,直到添加
    img.set('dirty',true)内部回调。