2013-11-08 1 views
1

Я использую последнюю версию:изображение не загружается при использовании canvas.loadFromJSON в Fabric.js 1.3.0

http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.3.0/fabric.min.js

тест ниже код имитирует холст вы сэкономите через 1 секунду. Затем загрузите его из JSON. Это работает в более старых версиях, затем на 1.3.0 он перестает работать. Вы должны держать положить некоторые тайм-аут, как:

setTimeout(function(){canvas.renderAll()},500); 

, чтобы заставить его работать в разы, но не все время.

var img= "https://www.google.com/images/srpr/logo3w.png";   
fabric.Image.fromURL(img, function(img) { 
     img.set({ 
     left: 200, 
     top: 200 
    }); 
    canvas.add(img); 
    canvas.renderAll(); 
}); 
setTimeout(function(){ 
    var json=JSON.stringify(canvas); 
    canvas.clear();   
    canvas.loadFromJSON(json); 
    canvas.renderAll(); 
    //setTimeout(function(){canvas.renderAll()},500) // adding a timeout seems to be the only fix. 
},1000) 

Как мне сделать рендер, не добавляя некоторые таймауты, как раньше?

ответ

10

просто использовать

canvas.loadFromJSON(json,canvas.renderAll.bind(canvas)); 
+0

Привет Я пробовал здесь http://upmcwest.com/rinkupdates/boardjs/f1.htm (нажмите просмотреть исходный код) и результат тот же. – user2636123

+1

Только что обновленный выше ответ - используйте 'loadFromJSON' вместо' loadFronJson'. – Kienz

+0

Да, это так! Я думаю, что в этой версии, если у JSON есть изображение, требуется некоторое время, чтобы отобразить все, и вы получите мерцание. – user2636123

 Смежные вопросы

  • Нет связанных вопросов^_^