// Timer object enyo.kind({ name: "Timer", kind: enyo.Component, minInterval: 50, published: { baseInterval: 100, paused: false }, events: { onTriggered: "" }, // Constructor, start the timer create: function() { this.inherited(arguments); this.start(); }, // Destroy the timer destroy: function() { this.stop(); this.inherited(arguments); }, // Start the timer start: function() { this.job = window.setInterval(enyo.bind(this, "timer"), this.baseInterval); }, // Stop the timer stop: function() { window.clearInterval(this.job); }, // Pause timer pause: function() { this.paused = true; }, // Resume the timer resume: function() { this.paused = false; }, // Periodic event raised timer: function() { if (!this.paused) this.doTriggered({time: new Date().getTime()}); }, // Interval changed event baseIntervalChanged: function(inOldValue) { this.baseInterval = Math.max(this.minInterval, this.baseInterval); this.stop(); this.start(); } });