2013-03-09 66 views
0

加載此JSON有什麼問題? 選擇一個新對象,設置它的ID,添加並保存它。試圖重新加載JSON對象會導致一個空的畫布。加載此JSON有什麼問題?

http://jsfiddle.net/Sugv4/14/

function loadCanvas() { 
    canvas.clear(); 
    window.alert(js); 

    canvas.loadFromDatalessJSON(js) 
    canvas.renderAll(); 
} 

回答

0

儘量把這個JavaScript代碼:

var canvas; 
$(function() { 
    canvas = window._canvas = new fabric.Canvas('c'); 

    fabric.Labeledrect = fabric.util.createClass(fabric.Rect, { 
     type: 'labeledRect', 
     initialize: function (options) { 
      options || (options = {}); 
      this.callSuper('initialize', options); 
      this.set('label', options.label); 
      this.set('id', options.id); 
     }, 
     toObject: function() { 
      return fabric.util.object.extend(this.callSuper('toObject'), { 
       label: this.get('label'), 
       id: this.get('id') 
      }); 
     }, 
     _render: function (ctx) { 
      this.callSuper('_render', ctx); 
      ctx.font = '10px Helvetica'; 
      ctx.fillStyle = '#333'; 
      ctx.fillText(this.label, -this.width/2, -this.height/2 + 10); 
      ctx.fillText(this.id, -this.width/2, -this.height/2 + 30); 
     } 

    }); 

    fabric.Labeledrect.fromObject = function (object, callback) { 
     return new fabric.Labeledrect(object); 
    } 
    fabric.Labeledrect.async = true; 
}); 




function voegObjectToe() { 

    var myObjects = document.getElementById("myObjects"); 
    var kenmerk = myObjects.options[myObjects.selectedIndex].text; 


    //nieuw object 
    var rect = new fabric.Labeledrect({ 
     left: canvas.width/2, 
     top: canvas.height/2 

    }); 

    if (kenmerk == 'Camper') { 
     rect.set({ 
      width: 80, 
      height: 50, 
      fill: '#faa', 
      label: 'Camper', 
      id: document.getElementById("myObject").value 
     }); 

    } else if (kenmerk == 'Caravan') { 
     rect.set({ 
      width: 80, 
      height: 60, 
      fill: '#3ac', 
      label: 'Caravan', 
      id: document.getElementById("myObject").value 
     }); 
    } else if (kenmerk == 'Auto') { 
     rect.set({ 
      width: 70, 
      height: 40, 
      fill: '#bbb', 
      label: 'Auto', 
      id: document.getElementById("myObject").value 
     }); 
    } else if (kenmerk == "Boot") { 
     rect.set({ 
      width: 150, 
      height: 60, 
      fill: '#8d1', 
      label: 'Boot', 
      id: document.getElementById("myObject").value 
     }); 

    } 
    canvas.add(rect); 
    rect.set({ 
     label: kenmerk + ' ' + rect.width * 7 + ' cm', 
     rx: 8, 
     ry: 8 
    }); 
    canvas.renderAll(); 

} 


function saveCanvas() { 
    js = JSON.stringify(canvas.toDatalessJSON()); 

} 

function loadCanvas() { 
    //window.alert(js); 

    canvas.clear(); 
    canvas.loadFromDatalessJSON(js); 
    canvas.renderAll(); 
} 
+0

嗨,我有一個類似的問題,如果你可能能夠幫助? – null 2014-01-06 22:31:07

+0

史蒂夫,你的問題是什麼? – ptCoder 2014-01-10 00:16:28

+0

嗨,我解決了json問題(在擴展類時沒有意識到該類型必須是對象名稱),但是我確實有另一個可以幫助的問題?我有一個動畫循環,當一個對象檢測到碰撞時,我希望它將自己重置到開始位置,但它會移動到屏幕的一側。有什麼方法可以告訴你嗎? – null 2014-01-10 16:14:47