2012-06-09 12 views
0

我很難搞清楚這段粗體標記的代碼。可一些解釋我的那些行請奇怪的遞歸代碼繪製圖表

function growBars() { 
    var barStartX = 0; 
    var barStartY = 0; 
    var barHeight = 0; 
    var barValue = 0; 

    <!-- ********** Start Unable to understand --> 
    barValue = parseInt(chartData.bars[i].value); 
    barHeight = (barValue * chartHeight/maxValue)/numSteps * idxStep; 
    barStartX = chartMargin + chartAxisSpace + (i * (barWidth + barMargin)) + barMargin; 
    barStartY = chartMargin + (chartHeight - barHeight); 
    drawBar(barStartX, barStartY, barWidth, barHeight); 
} 
if (idxStep < numSteps) { 
    idxStep++; 
    setTimeout('growBars()', growSpeed); 
} 
} < -- * * * * * * * * * * * * * End till here-- > 

function drawBar(barX, barY, barW, barH) { 
    context.fillStyle = '#00c'; 
    context.fillRect(barX, barY, barW, barH); 
    context.shadowOffsetX = 3; 
    context.shadowOffsetY = -3; 
    context.shadowBlur = 3; 
    context.shadowColor = 'rgba(200, 200, 200, .3)'; 
    context.strokeStyle = '#000'; 
    context.lineWidth = 1; 
    context.strokeRect(barX, barY, barW, barH); 
} 

正如你可以看到上面的代碼繪製在圖上吧。我無法理解的是使用這個遞歸函數的方式。那段代碼是做什麼的?

+1

如果你修復了縮進,我想你會發現它不是遞歸的。 –

+1

這裏還有一個'}';我認爲這是一個錯字。 – Pointy

+0

什麼遞歸函數?你的意思是drawBar?我不確定你明白'遞歸'意味着什麼...... –

回答

0
1. barValue = parseInt(chartData.bars[i].value); 
2. barHeight = (barValue * chartHeight/maxValue)/numSteps * idxStep; 
3. barStartX = chartMargin + chartAxisSpace + (i * (barWidth + barMargin)) + barMargin; 
4. barStartY = chartMargin + (chartHeight-barHeight); 
5. drawBar(barStartX, barStartY, barWidth, barHeight); 
  1. 將轉換chartData.bars [I]。價值爲整數
  2. 設定杆高度;我不知道什麼numSteps或idxStep是 3/4。設置欄x,y啓動座標
  3. 使用上面計算的值調用drawBar函數。

它不是遞歸雖然你,除非你打算在你的圖表展示數據

function growBars() { //START OF FUNCTION 
    var barStartX = 0; 
    var barStartY = 0; 
    var barHeight = 0; 
    var barValue = 0; 

    <!-- ********** Start Unable to understand --> 
    barValue = parseInt(chartData.bars[i].value); 
    barHeight = (barValue * chartHeight/maxValue)/numSteps * idxStep; 
    barStartX = chartMargin + chartAxisSpace + (i * (barWidth + barMargin)) + barMargin; 
    barStartY = chartMargin + (chartHeight - barHeight); 
    drawBar(barStartX, barStartY, barWidth, barHeight); 
} //END OF FUNCTION 
if (idxStep < numSteps) { //START OF IF STATEMENT 
    idxStep++; 
    setTimeout('growBars()', growSpeed); 
} //END OF IF STATEMENT 
} < -- * * * * * * * * * * * * * End till here-- > // UNPAIRED CLOSE BRACKET 

function drawBar(barX, barY, barW, barH) { 
    context.fillStyle = '#00c'; 
    context.fillRect(barX, barY, barW, barH); 
    context.shadowOffsetX = 3; 
    context.shadowOffsetY = -3; 
    context.shadowBlur = 3; 
    context.shadowColor = 'rgba(200, 200, 200, .3)'; 
    context.strokeStyle = '#000'; 
    context.lineWidth = 1; 
    context.strokeRect(barX, barY, barW, barH); 
} 

,你可以從我的意見看到,growbars是一種生長不需要召回功能不從本身內部調用,因此它不是遞歸的