Hi jonib & Nathan, Im thinking its going to impossible for me to get the function to loop 1 after the other since I calculate the time due to the random speed.
So maybe I should just make sure it loops every 10 seconds or so. I already set the max length of each array instance to 28 characters, so 28x(0.35 sec max) = 9.8. Either that or dump the random delay so I can calculate the exact time its going to take. The BBC uses a setInterval function, so im guessing .periodical() is the MooTools way? On Oct 1, 2:17 am, jonlb <[EMAIL PROTECTED]> wrote: > You might be able to make this work by using the mootools function > periodical: > > http://mootools.net/docs/Native/Function/#Function:periodical > > It's just the beginning of a thought and I haven't fleshed it out much > but it might help.... > > jonlb > > On Sep 29, 1:34 pm, "liam.smart" <[EMAIL PROTECTED]> wrote: > > > Hi all, > > > Im new to MooTools and Javascript but I have accomplished a fair bit > > in a short time. One thing I'm not really sure how to do, is loop a > > function repeatedly. I have modified the code at the bottom to try and > > get a looping version. > > > I am trying to create a news ticker like on the BBC website. Just now, > > it just displays the last instance in the array, but I need to keep > > cycling through all the instances in the array, and then start from > > the start again. > > > I have thought about getting the length of the string, multiplying > > that by the speed, and then doing a set-interval to call the function, > > but the speed varies so that option will not work. > > > I then thought about doing a for loop and when x == the length of the > > array, start the function again. But the ticker is just reading the > > last instance. > > > I don't need some-one to do this for me, but just need pointed in the > > right direction. Should I be using the .delay() method, or is > > the .periodical() one the one I want? Do I need to create a chain? Its > > a fair bit of code to post so will just post the important bits > > (hopefully people can see what I'm trying to do here. After it has > > went through the array, start again, but obviously the loop is > > finishing quicker than the actual ticker, so that what makes me think > > I need to chain the functions and set delays...): > > > [start code] > > //initialization > > initialize: function(options) > > { > > //set options > > this.setOptions(options); > > > //remove 'Hidden' class > > if(this.options.container.hasClass('Hidden')) > > { > > this.options.container.removeClass('Hidden'); > > }; > > > //retrieve/split/set new html > > this.options.initString = this.options.container.innerHTML > > this.options.splitString = this.options.initString.split(','); > > this.options.container.set('html','<span>Latest:</span>'); > > > }, > > > //start the blogTicker > > start: function() > > { > > //set new news items from split string > > this.options.message = > > this.options.splitString[this.options.counter]; > > > //for every letter > > for(x = 0; x < this.options.message.length; x++) > > { > > //spits out characters at random pace > > var pace = (this.options.delay * x) + > > $random(0,this.options.variance); > > var current = this.options.message.charAt(x); > > > //spit out the letter or delete one if backChar is > > encountered > > if(current != this.options.backChar) > > { > > var go = this.setLetter.delay(pace,this); > > } > > else > > { > > var go = this.deleteLetter.delay(pace + > > this.options.backDelay,this); > > }; > > }; > > > if(this.options.counter > this.options.splitString.length-1) > > { > > this.options.counter = 0; > > this.initialize(); > > } > > else > > { > > this.options.counter++; > > }; > > > }, > > > //place the newest letter in the container > > setLetter: function() > > { > > //push string into the links now character by character > > this.options.container.set('html',this.options.container.get('html') > > + '' + this.options.message.charAt(this.options.cursor)); > > > //increment cursor > > this.options.cursor++;}, > > > [end code] > > > Like I said, I'm not here for a free ride, I just need pointed in the > > right direction as I have seriously spent a lot of time trying > > different things. > > > Many thanks, > > Liam
