JAVASCRIPT   94

Loop js

Guest on 8th June 2022 09:22:26 AM

  1. /*
  2. ---
  3.  
  4. script: Loop.js
  5.  
  6. description: Runs a class method on a periodical
  7.  
  8. license: MIT-style license.
  9.  
  10. authors: Ryan Florence <http://ryanflorence.com>
  11.  
  12. docs: http://moodocs.net/rpflo/mootools-rpflo/Loop
  13.  
  14. requires:
  15. - core:1.2.4/'*'
  16.  
  17. provides: [Loop]
  18.  
  19. ...
  20. */
  21.  
  22. var Loop = new Class({
  23.  
  24.         loopCount: 0,
  25.         isStopped: true,
  26.         isLooping: false,
  27.         loopMethod: $empty,
  28.  
  29.         setLoop: function(fn,delay){
  30.                 if(this.isLooping) {
  31.                         this.stopLoop();
  32.                         var wasLooping = true;
  33.                 } else {
  34.                         var wasLooping = false;
  35.                 }
  36.                 this.loopMethod = fn;
  37.                 this.loopDelay = delay || 3000;
  38.                 if(wasLooping) this.startLoop();
  39.                 return this;
  40.         },
  41.  
  42.         stopLoop: function() {
  43.                 this.isStopped = true;
  44.                 this.isLooping = false;
  45.                 $clear(this.periodical);
  46.                 return this;
  47.         },
  48.  
  49.         startLoop: function(delay) {
  50.                 if(this.isStopped){
  51.                         var delay = (delay) ? delay : this.loopDelay;
  52.                         this.isStopped = false;
  53.                         this.isLooping = true;
  54.                         this.periodical = this.looper.periodical(delay,this);
  55.                 };
  56.                 return this;
  57.         },
  58.  
  59.         resetLoop: function(){
  60.                 this.loopCount = 0;
  61.                 return this;
  62.         },
  63.  
  64.         looper: function(){
  65.                 this.loopCount++;
  66.                 this.loopMethod(this.loopCount);
  67.                 return this;
  68.         }
  69.  
  70. });

Raw Paste


Login or Register to edit or fork this paste. It's free.