Keep at it! Believe me, I'm still learning more about mootools every day. My classes are getting a lot better than they used to be, but even my crappy ones made developing so much more awesome.

I made a few adjustments to your code. Loop's periodical doesn't need to be cleared or anything, it's got methods to handle all that for you: `stopLoop` and `startLoop`.

Also, we were figuring out the next index in two places (`loop` and `loop_next`.) So I pulled that logic out into it's own method so we only have it in one place.

Here's an example without altering functionality, you can see it's a bit easier to read and deal with.

http://mooshell.net/nTLZq/3

But I didn't like that if I stopped the loop, and then clicked "next" or "back", it would restart. So I put a little conditional in there to check if it was looping or not in the next and previous methods.

I also renamed the methods from `loop_next` to `showNext` (and `showPrevioius`) for two reasons:
  1) MooTools style guide is to use camelCase and
2) the method won't necessarily restart the loop anymore, it simply shows the next slide and lets the loop keep doing whatever it was doing before.

http://mooshell.net/nTLZq/4

Ryan Florence

[Writing TextMate Snippets] ( http://blog.flobro.com/ )

On Nov 9, 2009, at 2:28 AM, cbolson wrote:


Thanks Ryan.

That wasn't quite what I was after.  Your code makes it loop in
reverse order whereas what I wanted was it just to go back just by 1
"slide" then continue foward as before.  I probably didn't explain
myself very clearly :(

Anyway, I got it working by doing, as you said in that, rather than
modifying the loop class, I added new methods to the class that
implemented it.

I am using a variation of your slideshow (removed the side labels for
my needs) so that is the class that I adjusted.  If it is of any use
to any body, I have put up a demo here: http://mooshell.net/nTLZq/2

These are the methods that I added for "back" and "next" controls:

// move forward one item and reset timer
   loop_next:function(){
       $clear(this.periodical);
       this.periodical = this.looper.periodical
(this.options.delay,this);
       var nextIndex = (this.currentIndex == this.slides.length-1) ?
0 : this.currentIndex + 1;
       this.show(nextIndex);
       return this;
   },
   // move back one item and reset timer
   loop_prev: function(delay){
       $clear(this.periodical);
       this.periodical = this.looper.periodical
(this.options.delay,this);
       var nextIndex = (this.currentIndex == 0) ?
this.slides.length-1 : this.currentIndex - 1;
       this.show(nextIndex);
       return this;
   }

Once again, great stuff Ryan, thanks to your demos I feel that I am
finally beginning to understand classes (don't laugh)

Chris


On 9 nov, 04:44, Ryan Florence <[email protected]> wrote:
You shouldn't have to touch Loop, just adjust your class that
implements it (though I did add one line to the setLoop method, so you
might want to download it here:http://moodocs.ryanflorence.com/RpFlo/Loop)
.

1) Write a previous method in your implementing class that works with
Loop, just like the next method worked without the looping.

2) Call `myInstance.setLoop(this.previous, 500)`, or whatever delay
you want, and it will now loop your previous method.

3) If you're relying on `this.loopCount`, just drop in `this.loopCount
= count - 2` in your previous method to increment it negatively.

Check out the new test:

http://ryanflorence.com/scripts/mootools/Loop/test/

Ryan Florence

[Writing TextMate Snippets] (http://blog.flobro.com/)

On Nov 8, 2009, at 4:24 PM, cbolson wrote:



Thanks Ryan, I shall be waiting patiently :)

On 8 nov, 23:47, Ryan Florence <[email protected]> wrote:
I've been thinking of doing something like that.  I'll take a look,
see if I can come up with something.

Ryan Florence

[Writing TextMate Snippets] (http://blog.flobro.com/)

On Nov 8, 2009, at 3:28 PM, cbolson wrote:

Great little class Ryan, thanks for sharing it!
I am trying to adapt it slightly give it some "back" and "next"
manual
controls.
The "next" I have achieved by simply calling the "looper" function,
however I am having trouble getting it to roll back.
Any suggestions as to how this could be done?
I tried adding a further method to the class like this but with no
luck:
unloop: function(){
   this.loopCount--;
   this.loopMethod(this.loopCount);
   return this;
   }
Thanks,
Chris

On 21 oct, 06:34, Ryan Florence <[email protected]> wrote:
Makes sense to me.  Done.

I actually made some posts about usingLoop(or any mixin, really):

http://blog.flobro.com/#/posts/4-mootools-mixins-part-one-loop-
jshttp...
posts/5-mootools-mixins-part-two-
spriteanimation-jshttp://blog.flobro.com/#/posts/6-mootools- mixins-
part-three-
simpleslideshow-js

-Ryan Florence

On Oct 20, 2009, at 9:07 PM, csuwldcat wrote:

What do you think about dropping the -ing on the start and stop
calls?  I say this only for length sake, take it or leave it :)

On Oct 19, 11:51 am, Rolf -nl <[email protected]> wrote:
Not looping anything right now, but I like it anyway :)
Also dig the wallpaper plugin, I think I can use it too which
saves
me
some time!

Cheers

On Oct 19, 8:22 pm, Ryan Florence <[email protected]> wrote:

Cool, thanks.

I plan on allowing users to have more than one library (at the
moment
you have to register twice for two libraries).  I'll also be
allowing
users to make libraries public or private, since some classes
are so
application specific you don't necessarily want to share them.

On Oct 19, 2009, at 11:53 AM, Eneko Alonso wrote:

The site looks good too... I signed up and soon will be sharing
some
mootools snippets I have.

On Sun, Oct 18, 2009 at 8:49 PM, Ryan Florence
<[email protected]> wrote:
Thanks Fabio,
Here's probably a better demo of is use:
http://ryanflorence.com/scripts/mootools/InfiniteTicker/ test/
On Oct 18, 2009, at 4:21 PM, Fábio M. Costa wrote:

oh nice, i always wanted to implement a mixin class but i just
cant
find a
generic case where it fits.
Nice one!
i see you got a lot of work in there Ryan.
Thanks for your contributions!
cya

--
Fábio Miranda Costa
Solucione Sistemas
Engenheiro de interface

On Sun, Oct 18, 2009 at 6:38 PM, Ryan Florence
<[email protected]> wrote:

http://moodocs.ryanflorence.com/RpFlo/Loop

It seems several of my classes end up with some methods to
start,
stop,
and reset aloopthat's firing a function on a timer: image
galleries, news
tickers, twitter feeds, sprite animations, to name a few.

Instead of writing out those methods every time, now I can
just
implement
Loopand I'm done.

You can use it just like Options or Events in any class.

Enjoy!

Reply via email to