2014-04-25 139 views
0

後增加了一倍我這裏有一個小提琴:http://jsfiddle.net/armedstar/zgM9X/的Javascript計時器秒1分鐘

我有一個帆布動畫間隔定時器,一旦我打一分鐘,秒數開始翻倍。任何人都知道可能是由什麼造成的?

HTML:

<div id="loader"><canvas id="showLoader" width="250" height="250"></canvas><div id="showTimer"><p id="elapsedTime"> 

    <script> 
    var clockTest = new clock(document.getElementById("showLoader"), 0, 0, 0, 0); 
    clockTest.animate(); 
    </script> 

</p></div></div> 

JAVASCRIPT:

function clock(canvas, curPerc, endPercent, minsWatched, secsWatched) { 

var self = this; 

self.canvas = canvas; 
self.curPerc = curPerc; 
self.endPercent = endPercent; 
self.minsWatched = minsWatched; 
self.secsWatched = secsWatched; 
self.context = self.canvas.getContext('2d'); 
self.context.lineWidth = 10; 
self.context.strokeStyle = '#ed3f36'; 

var showPerc = document.getElementById("elapsedTime"); 
var x = self.canvas.width/2; 
var y = self.canvas.height/2; 
var radius = 75; 
var counterClockwise = false; 
var circ = Math.PI * 2; 
var quart = Math.PI/2; 


self.animate = function (current) { 

    self.context.clearRect(0, 0, self.canvas.width, self.canvas.height); 
    self.context.beginPath(); 
    self.context.arc(x, y, radius, -(quart), ((circ) * current + 1) - quart, false); 
    self.context.stroke(); 
    self.curPerc++; 

    setInterval(function() { 
     if (self.secsWatched < 60) { 
      self.secsWatched++; 
     } else if (self.secsWatched == 60) { 
      self.secsWatched = 0; 
      self.minsWatched++; 
     } 

     var time = (self.minsWatched < 10 ? "0" + self.minsWatched : self.minsWatched) + ":" + (self.secsWatched < 10 ? "0" + self.secsWatched : self.secsWatched); 
     showPerc.innerHTML = time; 

    }, 1000); 

    setInterval(function() { 
     self.animate(self.endPercent + (self.curPerc/100)); 
    }, 60000); 



} 

}

更新!只是想通了。我在animate()裏面有clock函數,所以它發射了兩次。更新了小提琴和下面的代碼作品。

function clock(canvas, curPerc, endPercent, minsWatched, secsWatched) { 

var self = this; 

self.canvas = canvas; 
self.curPerc = curPerc; 
self.endPercent = endPercent; 
self.minsWatched = minsWatched; 
self.secsWatched = secsWatched; 
self.context = self.canvas.getContext('2d'); 
self.context.lineWidth = 10; 
self.context.strokeStyle = '#ed3f36'; 

var showPerc = document.getElementById("elapsedTime"); 
var x = self.canvas.width/2; 
var y = self.canvas.height/2; 
var radius = 75; 
var counterClockwise = false; 
var circ = Math.PI * 2; 
var quart = Math.PI/2; 

setInterval(function() { 
     if (self.secsWatched < 60) { 
      self.secsWatched++; 
     } else if (self.secsWatched == 60) { 
      self.secsWatched = 0; 
      self.minsWatched++; 
     } 

     var time = (self.minsWatched < 10 ? "0" + self.minsWatched : self.minsWatched) + ":" + (self.secsWatched < 10 ? "0" + self.secsWatched : self.secsWatched); 
     showPerc.innerHTML = time; 

    }, 1000); 


self.animate = function (current) { 

    self.context.clearRect(0, 0, self.canvas.width, self.canvas.height); 
    self.context.beginPath(); 
    self.context.arc(x, y, radius, -(quart), ((circ) * current + 1) - quart, false); 
    self.context.stroke(); 
    self.curPerc++; 

    setInterval(function() { 
     self.animate(self.endPercent + (self.curPerc/100)); 
    }, 60000); 



} 

}

回答

0

你有2個電話後1分鐘動畫。剪下第二個setInterval;另外,如果秒< 60是多餘的 P.S .:我喜歡你的Python方式的javascript