2013-03-09 47 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