Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS Воспроизведение функции!? (https://javascript.ru/forum/misc/16844-js-vosproizvedenie-funkcii.html)

Severtain 25.04.2011 11:43

JS Воспроизведение функции!?
 
Вообщем здание можно сказать простое, просто не знаю как реализовать:
Есть некая функция
function video() {...}
в теле документа есть кнопка, которая запускает эту функцию на!
Вопрос: Каким образом можно сделать воспроизведение функции до тех пор, пока нажата кнопка!

P.S. Просто через функцию Onclik идет лишь одно нажатие после которого выполняеться функция, а мне необходим воспроизведение функции при зажатой кнопке!
Ну надеюсь понятно расписал)) Если что напишу подробнее! + Мне не нужен код всей программы, мне нужно как именно сделать такую кнопку!

Riim 25.04.2011 12:05

При mousedown запускаем таймер (1, 2) который периодически запускает функцию. С остановкой сложнее: пользователь может, не отпуская кнопки мыши, перенести курсор вне кнопки и отпустить - mouseup не сработает. Это тоже надо продумать.

Еще можно сделать, что бы при первом клике кнопка нажималась, при втором - отжималась.

poorking 25.04.2011 12:08

можно mouseup на document повесить

Severtain 25.04.2011 12:12

А если это сделать при нажатии кнопки на клавиатуре! С помошью чего можно сделать такую же функцию??

+ можно ссылочки на примеры.. если есть такие :)

Спасибо!

poorking 25.04.2011 12:16

<!DOCTYPE html>
<meta charset = "utf-8" />
<script type = "text/javascript">


window.onload = function(){
	
	var console = document.getElementById("console");
	
	function log(text){
		console.innerHTML += text + "<BR />";
	}
	
	document.getElementById("go").onmousedown = function(){
		(function(){
			log("оппа!");
			timer = window.setTimeout(arguments.callee, 500);
		}())
		
	}
	
	document.onmouseup = function(){
		window.clearInterval(timer);
	}
	
}
</script>

<button id = "go">go!</button>

<div id = "console"></div>

Riim 25.04.2011 12:22

Цитата:

Сообщение от Severtain
при нажатии кнопки на клавиатуре

лови события keypress (keydown для оперы) и keyup. И в обработчике что-то вроде того:
function(e) {
	if ((e.keyCode || e.which) != 9/* код клавиши */) {
		/* .... */
	}
}

poorking 25.04.2011 12:24

Добавил возможность нажатия стрелку влево
<!DOCTYPE html>
<meta charset = "utf-8" />
<script type = "text/javascript">
window.onload = function(){
	
	var console = document.getElementById("console");
	
	var progress = false;
	
	function log(text){
		console.innerHTML += text + "<BR />";
	}
	
	
	function video(){
		
		if(progress){
			return false;
		}
		
		progress = true;
		
		(function(){
			log("оппа!");
			
			if(progress){
				window.setTimeout(arguments.callee, 250);
			}
		
		}())
	}
	
	function stop(){
		progress = false;
	}
	
	document.getElementById("go").onmousedown = video;
	
	document.onmouseup = stop;
	
	function key(e){
		return function(event){
			return event.which || event.keyCode;
		}(e || window.event)
	}
	
	//СТРЕЛКА ВЛЕВО
	var pushed = false;
	window.onkeydown = function(e){
		if(key(e) == 37){
			if(pushed){
				return false;
			}
			pushed = true;
			video();
			
		}
	}
	
	window.onkeyup = function(e){
		if(key(e) == 37){
			pushed = false;
			stop();
		}
	}
	
}

</script>

<button id = "go">go!</button>

<div id = "console"></div>

Severtain 25.04.2011 12:26

Большое спасибо буду разбираться!

Severtain 25.04.2011 12:30

Супер все отлично работает! То что нужно! :)


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