Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2009, 00:06
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

Воспроизведение gif при постоянном обновлении
Написал AJAX скрипт...Проблема в том, что у меня скрипт обновляет данные каждые 100милисекунд....при нажатии на клавишу у меня должна отображатся картинка анимированая:
if (events.keyCode == 13){
key = "&keyW=1";
psrc = "&psrc=2a.gif";
}
при нажатии на клавишу и ее удержании скрипт отправляет psrc переменку на сервер и там php тулит ее в БД.
Все гуд, только при отображении картинки анимация идет только 100милисекунд я так понял, и воспроизводится заново...получаеться не анимация а конвульсии))))) помогите это исправить
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2009, 09:30
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

AJAX-скрипт O_o
Сообщение от Jekel
Все гуд, только при отображении картинки анимация идет только 100милисекунд я так понял, и воспроизводится заново...
т.е. мы за тебя должны догадаться, что там происходит?
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2009, 14:05
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

да так и есть....время анимации картинки = интервалу запроса на php файл
setTimeout('process()', 100);
Ставлю 1000 - анимация почти вся успевает отобразится((( но обновление нужно 100мс стабильно! Помогите! Вчера попробовал понять в чеп проблема, вывел в коде картинку не через запрос на сервер
document.getElementById("stroka").innerHTML = "<img src="1a.gif"></img>";
анимация начала нормально отображатся и эта и та которую выводит через сервер!!!((( бред какой-то. В чем трабла?! Прошу о помощи!

Последний раз редактировалось Jekel, 19.12.2009 в 14:19.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2009, 14:25
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

ваше сообщение практически нечитаемо, и похоже на бессвязный бред,а не на четко поставленный вопрос
как, я догадываюсь, у вас при отправлении AJAX-запросы в момент старта отображается анимация типа loader-а, и так как новый запрос отсылается до того момента, как анимация успевает завершится, то анимация скачет на свой начальный момент
решение:
заведите себе счетчик активных AJAX-запросов
при старте нового запроса плюсуйте его, при завершении-минусуйте
при старте AJAX-запроса, выводите анимацию только если счетчик был ноль, а стал еденица
При завершении Ajax-запроса закрывайте анимацию, при условии, что это последний активный запрос
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2009, 14:33
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

да там всегда нужно 100мс таймаут запросов
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2009, 14:38
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

Кусок кода:
function process(){
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
pid = encodeURIComponent(document.getElementById("pid").value);
xmlHttp.open("GET", "konekt.php?pid=" + pid + key + 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 first = xmlRoot.getElementsByTagName("first")[0].firstChild.data;
  document.getElementById("firstdiv").innerHTML = first;
  }
}

document.onkeydown = function (event){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
events = event || window.event;

if (events.keyCode == 13){
key = "&keyEnter=1";
psrc = "&psrc=1a.gif";
}

}
}

setInterval('process()', 100);


1a.gif - не успевает до конца отобразить анимацию (анимашку "типает").

Последний раз редактировалось Jekel, 19.12.2009 в 14:58.
Ответить с цитированием
  #7 (permalink)  
Старый 19.12.2009, 15:23
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

ну подскажите что делать....пожалуйста..
Ответить с цитированием
  #8 (permalink)  
Старый 19.12.2009, 15:31
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Jekel
ну подскажите что делать
посыпать голову пеплом, а потом оторвать руки
из данного кода, ваша проблема очевидной не становится, так как в нем нету ни единой строчки по поводу вашей анимации, кроме как посылки на сторону сервера имени файла анимации
а руки надо отрывать за такое использование объекта xmlhttprequest в глобальной области видимости
идите повторите основы
http://javascript.ru/tutorial/ajax/intro
Ответить с цитированием
  #9 (permalink)  
Старый 19.12.2009, 16:01
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

ну вот пхп

$psrc = $_GET['psrc'];
$pid = $_GET['pid'];

$keyEnter = $_GET['keyEnter'];
if($keyEnter==1){
$suy = $yp - 10;
mysql_query("UPDATE customers SET y='".$suy."', loc='".$psrc."' WHERE id='".$pid."'");
$keyEnter=0;
}

$mybases = mysql_query("SELECT * FROM customers WHERE id='".$pid."'"); 
$dbs = mysql_fetch_array($mybases);
$yp = $dbs['y'];
$xp = $dbs['x'];
$locp = $dbs['loc'];
$name = $dbs['name'];

$animation="<img src= '".$locp."' width='50' height='50' id='".$name."' name='".$name."' style='position: absolute; left:".$xp."; top:".$yp."'></img>";


$dom = new DOMDocument();

$response = $dom->createElement('response');
$dom->appendChild($response);

$first = $dom->createElement('first');
$response->appendChild($first);
$anim = $dom->createTextNode($animation);
$first->appendChild($anim);

$xmlString = $dom->saveXML();
echo $xmlString;
Ответить с цитированием
  #10 (permalink)  
Старый 19.12.2009, 16:03
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

и я не понимаю что значит "такое" использование xmlhttprequest.....все гуд ворк, только аним не работает
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойство opener обнуляется при обновлении страницы LesPaulFAP Events/DOM/Window 0 12.10.2009 13:09
Изменение шапки при обновлении страницы nasty blood (X)HTML/CSS 0 07.04.2008 13:13