12.05.2015, 16:06
|
Новичок на форуме
|
|
Регистрация: 08.04.2015
Сообщений: 7
|
|
onkeydown onkeyup проверка на нажатие
Всем здравствуйте!
Сначала пояснение на русском, ниже выложу сам код.
Написал я скрипт, логика в крации такова: при нажатии в поле документа document.onkeydown= вызвать функцию pressdown. При отпускании клавиши document.onkeyup= вызвать функцию pressup. Все работает локально.
Проблема в следующем - При подключении через teamviewer к компьютеру, где лежит этот html документ, - html документ игнорирует onkeyup !!! Т.е. teamviewer не отсылает команду onkeyup! Как можно в связи с этим изменить код? Или какой софт посоветуете для удаленного вызова onkeyup?
А вот и код:
<script language = 'javascript'>
var nazhatie=0;
setTimeout(repeat,100);
function govorit(){
PlayVisemes('2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342');
SetEmotion('joy');
govorilka = setTimeout(govorit,1500);
};
function repeat(){
if(nazhatie==500){
govorit();
zatknis();
} else setTimeout(repeat,100)
};
function zatknis(){
if(nazhatie==0){
clearTimeout(govorilka);
PlayVisemes('0,50');
repeat();
}
else setTimeout(zatknis,100);
};
function pressdown(){
nazhatie=500};
function pressup(){
nazhatie=0};
document.onkeydown=pressdown;
document.onkeyup=pressup;
</script>
|
|
12.05.2015, 16:48
|
Новичок на форуме
|
|
Регистрация: 08.04.2015
Сообщений: 7
|
|
Мне получается нужно убрать: document.onkeyup=pressup; это сто пудово, а что взамен?
Пробовал изменить pressdown:
function pressdown(){
nazhatie=500;
setTimeout(pressup,200)};
Но тогда он при зажатии клавиши запускает дофигищще pressup и каждая через 200 мсек, т.е. ваще фигня получается.
А что если вместо setTimeout(pressup,200)
заменить на otmena = setTimeout(pressup,200)
т.е. есть конкретная переменная "otmena", которая не запускается 100500 тыщ раз, а которая заменяет сама себя до тех пор, пока зажата клавиша.
Правильно ли я понимаю? Или же - что еще можете предложить?
|
|
12.05.2015, 18:56
|
Новичок на форуме
|
|
Регистрация: 08.04.2015
Сообщений: 7
|
|
Блин, от вас пока дождешься ответа...
Тот вопрос уже решил путем, указанный ниже. Теперь у меня другой вопрос. Как сократить то время, пока компьютер поймет, что клавиша не просто нажата, а ЗАЖАТА?
Я реализовал так - при зажатии любой клавиши действует onkeydown, происходит действие. НО! Пока компьютер поймет, что клавиша зажата, проходит еще какое-то время (0,5 сек). Как это время сократить?
Для тех, кто в будущем зайдет на этот сайт, вот конечный результат:
var nazhatie=0;
setTimeout(repeat,100);
otmena = setTimeout(pressup,100);
function govorit(){
PlayVisemes('2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342');
SetEmotion('joy');
govorilka = setTimeout(govorit,1500);
};
function repeat(){
if(nazhatie==500){
govorit();
zatknis();
} else setTimeout(repeat,100)
};
function zatknis(){
if(nazhatie==0){
clearTimeout(govorilka);
PlayVisemes('0,50');
repeat();
}
else setTimeout(zatknis,100);
};
function pressdown(){
nazhatie=500;
clearTimeout(otmena);
otmena = setTimeout(pressup,100);};
function pressup(){
nazhatie=0};
document.onkeydown=pressdown;
|
|
|
|