Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Бегающая строка(Upgraded) (https://javascript.ru/forum/project/21301-begayushhaya-stroka-upgraded.html)

Gamestop 04.09.2011 18:30

Бегающая строка(Upgraded)
 
/*
Библиотека MonsterScript - MS

Методы:



MS.textMove(elementId,text,phase,speed) 
{
	elementId - Id элемента на который вешается эффект
	text - текст который будет бегать, если передаётся массив, то текст каждого элемента будет выведен по очереди
	phase - если true, то текст будет бегать в цикле вперед и назад,false - текст будет бежать до конца и остановится(по умолчанию - false)
	speed - необязательный параметр - по умолчанию 140 скорость
}







*/
MS = {
	
	start: 0,
	end: 0,
	text: 'lol',
	currentText: '',
	id: 'lol',
	step: 0,
	status: false,
	phase: false,
	forward: function(el,speed)
	{
		el.innerHTML = this.text.slice(this.start,this.end);
		this.end++;
		if(this.end >= this.text.length + 1)
		{
			clearInterval(this.status);
			//alert('Interval Stoped');
			//alert(this.phase)
				if(this.phase == true)
				{
					this.status = setInterval(function(){MS.backward(el,speed)},speed);
				}
		}
	},
	backward: function(el,speed)
	{
		this.end--;
		el.innerHTML = this.text.slice(this.start,this.end);
		if(this.end <= 0)
		{
			clearInterval(this.status);
			//alert('finish')
			//alert(this.end)
			this.textMove(this.id,this.text,speed);
		}
	},
	textMove: function(id,text,speed,phase)
	{
		if(typeof phase == 'boolean') this.phase = phase;
		if(!speed || isNaN(speed)) speed = 140;
			//alert(this.currentText.join)
			
		if(this.currentText.join == undefined)
		{
			this.currentText = text;
			this.text = this.currentText;
			//alert(this.currentText[1])
		}
		//alert(this.currentText.length)
		if(this.currentText.join != undefined && this.phase == true)
		{
			while(this.step < text.length)
			{
				//alert(this.step)
				this.text = this.currentText[this.step];
				this.step++;
				if(this.step == this.currentText.length) this.step = 0;
				break;
			}
		}
		else
		{
			//alert(this.currentText.join("--"));
			if(!text) this.text = 'Текст по умолчанию';
			//Если нужно чтобы элементы массива целиком добавлялись
			//Вместо букафки, то убираем toString();
			// в случае указания параметра false, и добавиви массив в текст
			// то тут можно вместо запятой добавить желаемый значёк
			try
			{
				this.text = this.currentText.join(', ').toString();
			}
			catch(e)
			{
				this.text = this.currentText.toString();
			}
		}
		if(!id) return alert('Укажите элемент в котором будет бегать строка!');
		if(!document.getElementById(id)) return alert('Элемент с таким id ненайден');
		this.id = id;
		var el = document.getElementById(this.id);
		this.status = setInterval(function(){MS.forward(el,speed)},speed);
	}
}


можно добавлять текст простой или массив слов, если true - то текст будет набиратся и удалятся аналогично, + можно ставить скорость, в случае если false, то массив слов выводится сразу, оставляя пробел после запятой), для удобства, вообщем удобненкая весч)

dmitriymar 04.09.2011 19:41

а чем это отличается от <marquee> где есть всё тоже самое?

Gamestop 04.09.2011 19:53

ну здесь по букавке набирается, а там сразу весь текст выходит, + можно массив слов кинуть))) как-бы разновидность)..

+ кроме того текст в таком же порядке удаляется при желании и опять возвращается

а вы огромный текст напишите в маленьком диве размером 200х200, и так чтобы он сверху вниз печатался...этот тег несможет с этим справится

+ помимо этого Этот тег не входит в спецификацию HTML и его наличие приведет к невалидному коду.

так что имейте ввиду

melky 04.09.2011 20:44

демо сделайте :)

try
			{
				this.text = this.currentText.join(', ').toString();
			}
			catch(e)
			{
				this.text = this.currentText.toString();
			}

это вы так строку от массива отличаете ? какой ужас

Gamestop 04.09.2011 21:16

эмм а как тут демо делать?)

насчёт различия, да другой способ в голову не пришёл :)


Часовой пояс GMT +3, время: 23:41.