Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   небольшой скриптик к вам на экран)) (https://javascript.ru/forum/project/12401-nebolshojj-skriptik-k-vam-na-ehkran.html)

Slawaq 15.10.2010 22:29

небольшой скриптик к вам на экран))
 
от вечерком этим написал скрипт, в ифрейм закину вам, посмотрите пожалуйста)) он вообще будет вставляться в игру, ну для счёта, как в игровых автоматах, только реалистичности не хватает, кажется проблема в том что числа спадают и поднимаются по функции у=х, пробывал ставить чёта другое, код вообще не работал, хоть округление было(или скорость поменять...?)..
но ни про это, вообще мне надо что бы если кто может мне помог уменьшить количество кода, и стоит ради уменьшения кода делать и добавлять объекты через DOM?
просто мне надо так сказать минимизировать код или сделать оптимизацию, короче я не знаю как это называется правильно, из-за этого не буду разбрасываться фразами, или ещё куда страшней заходить в гугл)) ну смысл в том, кода меньше, а работоспособность не потеряна))
ну а исходники посмотрите уже не ленясь хоть через ctrl+u)) зайдя по src ниже))
<iframe src ='http://slawaq.hmsite.net/guestbook/test.htm'></iframe>

Gozar 15.10.2010 23:12

поставил 0, начало бесконечно моргать, поставил -200, глюкать стало интересней. тестировать не пробовали? зачем отнимаете чужое время.

danik.js 16.10.2010 05:59

Стало чета интересно, накодил вот че:
<!DOCTYPE html>
<html>
<head>
	<title>Цифровой дисплей</title>
	<style type="text/css">

		.digits li{
			display: inline-block;
			position: relative;
			width: 62px;
			height: 92px;
			background: #000;
		}
		.digits li span{
			position: absolute;
			display: block;
			background: #f00;
			border: 1px solid #900;
			opacity: 0.3;
			  -moz-border-radius: 2px;
		}
		/* horisontal segments */
		.digits li .segment-1,
		.digits li .segment-4,
		.digits li .segment-7{
			height: 2px;
			width: 44px;
			left: 8px;
		}
		.digits li .segment-1{
			top: 4px;
		}
		.digits li .segment-4{
			top: 84px;
		}
		.digits li .segment-7{
			top: 44px;
		}

		/* vertical segments */
		.digits li .segment-2,
		.digits li .segment-3,
		.digits li .segment-5,
		.digits li .segment-6{
			height: 30px;
			width: 2px;
		}
		.digits li .segment-2{
			top: 10px;
			left: 54px;
		}
		.digits li .segment-3{
			top: 50px;
			left: 54px;
		}
		.digits li .segment-5{
			left: 4px;
			top: 50px;
		}
		.digits li .segment-6{
			top: 10px;
			left: 4px;
		}

		.d0 .segment-1,
		.d0 .segment-2,
		.d0 .segment-3,
		.d0 .segment-4,
		.d0 .segment-5,
		.d0 .segment-6{
			opacity: 1;
		}

		.d1 .segment-2,
		.d1 .segment-3{
			opacity: 1;
		}

		.d2 .segment-1,
		.d2 .segment-2,
		.d2 .segment-4,
		.d2 .segment-5,
		.d2 .segment-7{
			opacity: 1;
		}

		.d3 .segment-1,
		.d3 .segment-2,
		.d3 .segment-3,
		.d3 .segment-4,
		.d3 .segment-7{
			opacity: 1;
		}

		.d4 .segment-2,
		.d4 .segment-3,
		.d4 .segment-6,
		.d4 .segment-7{
			opacity: 1;
		}

		.d5 .segment-1,
		.d5 .segment-3,
		.d5 .segment-4,
		.d5 .segment-6,
		.d5 .segment-7{
			opacity: 1;
		}

		.d6 .segment-1,
		.d6 .segment-3,
		.d6 .segment-4,
		.d6 .segment-5,
		.d6 .segment-6,
		.d6 .segment-7{
			opacity: 1;
		}

		.d7 .segment-1,
		.d7 .segment-2,
		.d7 .segment-3{
			opacity: 1;
		}

		.d8 .segment-1,
		.d8 .segment-2,
		.d8 .segment-3,
		.d8 .segment-4,
		.d8 .segment-5,
		.d8 .segment-6,
		.d8 .segment-7,
		.d8 .segment-8{
			opacity: 1;
		}

		.d9 .segment-1,
		.d9 .segment-2,
		.d9 .segment-3,
		.d9 .segment-4,
		.d9 .segment-6,
		.d9 .segment-7{
			opacity: 1;
		}
	</style>
</head>
<body>
	<ul id="display" class="digits">
		<li>
			<span class="segment-1"></span>
			<span class="segment-2"></span>
			<span class="segment-3"></span>
			<span class="segment-4"></span>
			<span class="segment-5"></span>
			<span class="segment-6"></span>
			<span class="segment-7"></span>
			<span class="segment-8"></span>
		</li>
		<li>
			<span class="segment-1"></span>
			<span class="segment-2"></span>
			<span class="segment-3"></span>
			<span class="segment-4"></span>
			<span class="segment-5"></span>
			<span class="segment-6"></span>
			<span class="segment-7"></span>
			<span class="segment-8"></span>
		</li>
		<li>
			<span class="segment-1"></span>
			<span class="segment-2"></span>
			<span class="segment-3"></span>
			<span class="segment-4"></span>
			<span class="segment-5"></span>
			<span class="segment-6"></span>
			<span class="segment-7"></span>
			<span class="segment-8"></span>
		</li>
	</ul>
	<button onclick="counter.countTo(this.nextSibling.value)">Считать до:</button><input type="text" />
	<script type="text/javascript">
		// конструктор дисплея
		function Display(id)
		{
			// dom-элементы представляющие собой цифры
			this.digits = document.getElementById(id).getElementsByTagName('li');
			// разрядность нашего дисплея
			this.width = this.digits.length;
			// метод для отображения дисплеем нужного числа
			this.set = function(number){
				number = number.toFixed();
				for (var i=number.length; i <this.width; i++){
					number = '0' + number;
				}
				var i = this.width;
				while (i--)
				{
					this.digits[i].className = 'd' + number[i];
				}
			}
		}
		// конструктор счетчика
		function Counter()
		{
			this.value 		=  0;
			this.step 		=  1;
			this.interval	= 100;
			this.countTo = function(to){
				clearInterval(this.intHandler);
				if (this.value == to) return true;
				var self = this;
				var multiplier = (to - this.value < 0) ? -1 : 1;
				this.intHandler = setInterval(function(){
					self.stepBy(multiplier*self.step);
					if (to == self.value) clearInterval(self.intHandler);
				}, this.interval);
			}
			this.stepBy = function(by){
				this.value += by;
				if (this.onStep) {
					this.onStep.call(this, this.value);
				}
			}
		}

		var display = new Display('display');
		display.set(0);
		var counter = new Counter;
		counter.onStep = function () {
			display.set(this.value);
		}
	</script>
</body>
</html>

Gozar 16.10.2010 09:01

Slawaq,
поставил -00 скрипт похоже со мной разговаривать начал, думаю просит его отдебажить :)

monolithed 16.10.2010 15:31

Цитата:

Сообщение от danik.js
Стало чета интересно, накодил вот че:

А зачем столько лишнего css/html кода?

ul, li span в вашем случае все эти элементы можно создать 10-й строчками кода, а то и меньше

Slawaq 16.10.2010 17:36

я только посмотрел коменты, и хочу сказать что это просто будет счётчик, который вводит не человек, а АЯКС!!(а ПХП который я напишу не допустит минусов на счету игроков, я надеюсь))) и сам смысл в том что эта вся байда идёть на клиентсайд, и я хотел найти помощи в уменьшении передаваемых кБ, просто это всего лишь один элемент с ещё таких, наверное нескольких, что будут лететь на клиентсайд. И да как на счёт реалистичности??))

danik.js 16.10.2010 22:01

Цитата:

Сообщение от monolithed
А зачем столько лишнего css/html кода?

ul, li span в вашем случае все эти элементы можно создать 10-й строчками кода, а то и меньше

Да, не спорю, li span можно и нужно сгенерировать. А сами цыфры на css реализовал, чтоб не усложнять js, и "отделить представление от контроллера" Можно тупо задать картинки каждому классу - будет очень коротко. Или обходить сегменты на js и скрывать/показывать их.
Насчет нелинейности. Думаю Это делается постоянной установкой разных таймаутов для функции. Величина таймаута зависит нелинейно от какойнибудь величины, меняющейся в пределах от 0 .. 1.
Чесно говоря могу только предположить. Тоже интересен вопрос. можно глянуть на всякие animation в jquery/mootoos
За партянку извиняюсь - вродебы вписывал код в [ spoiler ]

Gozar 16.10.2010 22:21

Цитата:

Сообщение от Slawaq (Сообщение 74468)
я только посмотрел коменты, и хочу сказать что это просто будет счётчик, который вводит не человек, а АЯКС!!(а ПХП который я напишу не допустит минусов на счету игроков, я надеюсь))) и сам смысл в том что эта вся байда идёть на клиентсайд, и я хотел найти помощи в уменьшении передаваемых кБ, просто это всего лишь один элемент с ещё таких, наверное нескольких, что будут лететь на клиентсайд. И да как на счёт реалистичности??))

т.к. эта тема дибильная по определению, то начнут с описания своей работы, пару летней давности. Писал я как-то сервис, не то чтобы большой, чел на 100тыс., больше со страны не предполагалось. Ну там файловую систему предусмотрел, аватары, каждому по папке, на сервера все побил, субдомены, защита от DoS, система ошибок, проверка запросов, сессии, хешкоды, мыло каждому, личка ну и т.д. В общем обычный такой сервис.

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

Теперь я сплю спокойно и знаю, что заказчик не подкрадется ко мне сзади и не потребует чего-нибудь, взамен хреново отдебаженого/написанного кода, как у Вас. Я показал вам три ошибки, не хотите исправлять, зачем показывали скрипт, покрасоваться?

Slawaq 16.10.2010 23:52

блин, Gozar, я не проф который с нуля сможет сделать свой сервис с нормальной защитой, и хорошей работоспособностью, но это для ВК, а ВК мне сам всё это пришлёт, а мне надо лишь, так сказать, более-менее обрабатывать всё это, ну и делать некоторые операции с счетами, от к операциям, как их более правильней и защищённей делать я буду уже с другой точки зрения смотреть, со всеми наворотами про атаки хакеров)) а это лишь интерфейс, который, так сказать, не будет иметь влияния на роботу системы, он будет, показателем)))

но за терпение перед моей по определению тупой темы, я всё же поставлю плюс за выдержку))
p.s.: нет не смогу поставить плюс, нельзя, слишком много уже раньше отплюсовал):)

Gvozd 17.10.2010 01:29

Цитата:

Сообщение от Slawaq
но это для ВК, а ВК мне сам всё это пришлёт

аха.
а проверку на тот случай если ВК изменит формат своего вывода, или еще что-то.
если такое произойдет, то пользователь будет получать непонятное поведение скрипта вместо понятного "скрипт временно не работает по причине изменения API вконтакте"
и кстати подделать хакеру ответ вконтактак для вашегно сркипта гораздо проще чем вам кажется.


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