簡體   English   中英

__canvases.push(canvas);的含義。

[英]Meaning of this.__canvases.push(canvas);

http://fabricjs.com/customization/上查看Fabric js示例時,我可以找到它。__canvases.push(canvas); 被調用時,我只是不知道為什么調用它,如果不調用該怎么辦。

var canvas = new fabric.Canvas('c2');
canvas.add(new fabric.Circle({ radius: 30, fill: '#f55', top: 100, left: 100 }));
canvas.selection = false;
this.__canvases.push(canvas);

如果您查看示例頁面的HTML,則會在第95-98行找到以下代碼

<script>
  this.__canvases = [ ];
  fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';
</script>

這將生成一個空數組,使用this.__canvases.push(canvas);數組時將填充該數組this.__canvases.push(canvas); 通過將canvas對象附加到數組的末尾(請參見Array.prototype.push()

然后,以下代碼(在第455-468行找到)使用此數組

(function() {
  fabric.util.addListener(fabric.window, 'load', function() {
    var canvas = this.__canvas || this.canvas,
        canvases = this.__canvases || this.canvases;

    canvas && canvas.calcOffset && canvas.calcOffset();

    if (canvases && canvases.length) {
      for (var i = 0, len = canvases.length; i < len; i++) {
        canvases[i].calcOffset();
      }
    }
  });
})();

此代碼僅計算在示例頁面上顯示畫布元素的位置。

因此,為了回答您的問題,它僅在示例頁面上用於幫助顯示示例頁面。 您的代碼中不需要它。 我認為每個示例的代碼顯示中都不應包含該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM