2016-09-13 124 views
4

以下代碼從數據生成路徑。我已經在d3.js中定義了一條路徑,它繪製正確,但.getTotalLength()未定義

var path = gameBoard.append('path') 
    .attr("id", "snake" + snakeIndex) 
    .attr("d", interpolator(data)) 
    .attr('stroke-width', snakeStroke) 
    .attr('fill', 'none') 
    .attr('stroke', config.snakeColor); 

數據定義的曲線路徑正確繪製。

這裏失敗getTotalLength()沒有被定義:

var totalLength = path.getTotalLength(); 

此外沒有定義getPointAlongLength()或者:

var point = path.getPointAtLength(position); 

回答

3

代替:

var totalLength = path.getTotalLength(); 

它必須是:

var totalLength = path.node().getTotalLength(); 

getTotalLength()在節點上工作,但path是節點數組,而不是節點本身。所以,你必須使用path.node()path[0][0]

+0

我完全同意你,如果你刪除了v3的味道,因爲沒有跡象表明實際使用的版本。 *'路徑'是D3選擇*應該足夠v3和v4。此外,'path.node()'是並且是獲取節點的首選方法,無需擺弄選擇的內部工作。 – altocumulus

1

是的,我發現我不得不使用path.node()來獲得正確的對象。 d3.js文檔非常難以閱讀,只有幾個例子。

相關問題