Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2011, 18:30
Аспирант
Отправить личное сообщение для Gamestop Посмотреть профиль Найти все сообщения от Gamestop
 
Регистрация: 25.05.2011
Сообщений: 93

Бегающая строка(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, то массив слов выводится сразу, оставляя пробел после запятой), для удобства, вообщем удобненкая весч)
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2011, 19:41
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

а чем это отличается от <marquee> где есть всё тоже самое?
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2011, 19:53
Аспирант
Отправить личное сообщение для Gamestop Посмотреть профиль Найти все сообщения от Gamestop
 
Регистрация: 25.05.2011
Сообщений: 93

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

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

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

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

так что имейте ввиду
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2011, 20:44
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

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

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

Последний раз редактировалось melky, 04.09.2011 в 20:50.
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2011, 21:16
Аспирант
Отправить личное сообщение для Gamestop Посмотреть профиль Найти все сообщения от Gamestop
 
Регистрация: 25.05.2011
Сообщений: 93

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

насчёт различия, да другой способ в голову не пришёл
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск