2012-06-09 11 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是一种生长不需要召回功能不从本身内部调用,因此它不是递归的