нет, спасибо, не надо
я устал от тебя хотя, можешь выложить, может кто-то более терпеливый, или с новыми силами поможет тебе |
:) ты эт, не злись)))
|
Сэр, вы там тонкий клиент собрались делать? Или отслеживалку движения курсора в документе?
<irony> Кстати, кайфовое предложение для всех верстальщиков: генерировать на сервере PNG и отдавать его клиенту прям куском. А потом при каждом движении мышью запрашивать новый, и с :hover париться не придется, о как! </irony> |
там надо при нажатии на клавишу менять картинку (анимацию gif)....запросы на сервак каждых 100 милисекунд происходят .... соответственно аним не успевает проигрыватся до конца
|
Простите, помимо обработки анимации Ваш скрипт должен 10 раз в секунду делать что-то полезное?
|
вот весь js код
Он принемает с сервера и отправляет данные на сервер
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
var xmlHttp;
if(window.ActiveXObject){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
xmlHttp = false;
}
}else{
try {
xmlHttp = new XMLHttpRequest();
}catch (e){
xmlHttp = false;
}
}
if (!xmlHttp){
alert("error.");
}else{
return xmlHttp;
}
};
function process(){
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
pid = encodeURIComponent(document.getElementById("pid").value);
xmlHttp.open("GET", "konekt.php?pid=" + pid + key + "&psrc=" + psrc, true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = readData;
}else{
setTimeout('process()', 100);
}
}
function readData() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
xmlResponse = xmlHttp.responseXML;
xmlRoot = xmlResponse.documentElement;
var one = xmlRoot.getElementsByTagName("one")[0].firstChild.data;
var tolok = xmlRoot.getElementsByTagName("tolo")[0].firstChild.data;
if(document.getElementById("one").innerHTML != one){
document.getElementById("one").innerHTML = one;
}
document.getElementById("dop").innerHTML = tolok;
}
}
document.onkeydown = function (event){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
events = event || window.event;
if (events.keyCode == 87){
key = "&keyW=1";
psrc = "2.gif";
tolo = 1;
}
if (events.keyCode == 83){
key = "&keyS=1";
psrc = "1.gif";
tolo = 2;
}
if (events.keyCode == 65){
key = "&keyA=1";
psrc = "3.gif";
tolo = 3;
}
if (events.keyCode == 68){
key = "&keyD=1";
psrc = "4.gif";
tolo = 4;
}
}
}
document.onkeyup = function (event){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
events = event || window.event;
if (events.keyCode == 87 && tolo == 1){
key = "&keyW=0";
psrc = "0.gif";
}
if (events.keyCode == 83 && tolo == 2){
key = "&keyS=0";
psrc = "0.gif";
}
if (events.keyCode == 65 && tolo == 3){
key = "&keyA=0";
psrc = "0.gif";
}
if (events.keyCode == 68 && tolo == 4){
key = "&keyD=0";
psrc = "0.gif";
}
}
}
setInterval('process()', 100);
|
мм. раз попросил помочь, то скажу сразу.
тебе надо немного почитать как работает XMLHTTPRequest второе. удалить походу тут надо
else{
setTimeout('process()', 100);
}
зачем вы постоянно проверяете статус каждые 100мс, если Вы даже не передаете изменения при нажати клавиш и отпускании? ведь пока запрос не закончится новые данные вы все равно не передадите как часто вы бы не проверяли. + у Вас стоит setInterval зачем еще задавать setTimeout ? на счет останавливания картинки... с XHR недолжно быть если Вы пользуетесь только им а нигде например iframe или еще чето.. а стоп. картинка случаем не в innerHTML one|dop ? |
ну я при нажатии клавиши переменка меняется а потом отправляется через function process()...а картинка в one...это то что мы с Вами лепили в пхп)
|
Я думаю оно даже так будет тупить анимацию
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
var xmlHttp;
if(window.ActiveXObject){
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
xmlHttp = false;
}
}else{
try {
xmlHttp = new XMLHttpRequest();
}catch (e){
xmlHttp = false;
}
}
if (!xmlHttp){
alert("error.");
}else{
return xmlHttp;
}
};
function process(){
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
xmlHttp.open("GET", "konekt.php", true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = readData;
}
}
function readData() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
xmlResponse = xmlHttp.responseXML;
xmlRoot = xmlResponse.documentElement;
var one = xmlRoot.getElementsByTagName("one")[0].firstChild.data;
if(document.getElementById("one").innerHTML != one){
document.getElementById("one").innerHTML = one;
}
}
}
setInterval('process()', 100);
|
Цитата:
обновляется все содержимое в том числе и твоя таже картинка начинает воспроизводится с начала. обойти этот эффект в твоем случае можно только анализируя каждый элемент в one и если он изменился с текущим каждым элементом document.getElementById("one").innerHTML тогда заменять его. здесь надо работать с потомками DOM |
| Часовой пояс GMT +3, время: 05:15. |