41

Re: плавне переміщення зображення в точку натиску миші

Faraon написав:
quez написав:

А нащо взагалі тримати координати в базі?

Для того щоб зберегти де саме персонаж гравця був останій раз. Просто це буде якось тупо гравцю уожний раз стартувати з координат 0:0. А що? У Вас є інша ідея?

Що за жанр такий у вашої гри? Мабуть щось оригінальне.

42 Востаннє редагувалося Faraon (12.01.2015 17:28:00)

Re: плавне переміщення зображення в точку натиску миші

Sensetivity написав:
Faraon написав:

Доречі, я виявив ще одну помилку в коді через що швидкість не була стала. Моє наступне питання також повязане з виправленням цієї помилки. Чому так відбувається?:

<?php
if(isset($_GET['id_clic']))
{
    $get_id_clic = $_GET['id_clic'];
    $query = mysql_query("UPDATE users SET `house`='$get_id_clic' WHERE login='$login' ")  or die("Савсэм плохо: " . mysql_error());
}
?>


<div id=update_us>
<?php
    $query = mysql_query("select * from users where login='$login'")or die("stop: ".mysql_error);
    $row_users = mysql_fetch_array($query);
    $user_reg = $row_users['city'];
    $id_clic = $row_users['house'];
    
    $click_img = mysql_query("select * from city where id='$id_clic'")or die("stop: ".mysql_error);
    $row_click_img = mysql_fetch_array($click_img);
    $click_img_x = $row_click_img['x'];
    $click_img_y = $row_click_img['y'];
?>
</div>



<div id=top_right>
 <?php echo $row_click_img['x']?> // при кожному клику по силці через що і відбувається обновлення блоку на екран виводиться нове значення змінної, так і має бути
<?php echo $row_click_img['у']?>
</div>


<script type="text/javascript">
function loc(id){
// відправляємо гет запит
    $.ajax({
        type: "GET",
        url: "game.php",
        data: "id_clic="+id,
    });
        
//оновлюємо два блоки для того щоб отримати нові значення змінних з бази
    $("#update_us").load("game.php #update_us"); 
    $("#top_right").load("game.php #top_right");    
 }


function setPosition(obj, x, y) {    
...
//ці змінні цілий час мають одне і теж саме значення яке отримали при загрузці сторінки, але $row_click_img['x'] та $row_click_img['у'] уже мають інше значення і це значення виводить на екран
        ruch_left = (<?php echo $row_click_img['x']?>+<?php echo $row_click_img['width']/3; ?>)+'%';
        ruch_top = (<?php echo $row_click_img['y']?>+<?php echo $row_click_img['height']-5; ?>)+'%';
...
}
</script>

<a href='#' onclick=loc($id_dom);return false> => </a> //На екрані є кілька таких силок в яких значення 
//змінної id_dom є різні. При клику на них ці значення записуються в базу. після чого обновляється блок в 
//якому ми получаємо нові значення зміних. Потім ці змінні ми виводимо на екран для того щоб впевнитися що
// при клиці ми зразу ж отримали нові значення змінних. І все правильно виводить, але в тому куску коду який заключається в <script type='text/javascript'> </script> значення змінних по невідомих для мене причинах чомусь не хочуть мінятися!
  1. В коментарях ви описуєте змінну як id_dom, а в самому JS ви назвали її $id_dom , зі знаком долара, що не властиво для JS.

  2. Щодо коду в блоці <div id=update_us> Чому б не витягнути інформацію одним запитом, замість 2-х ?

  1. Дякую. На майбутнє буду знати.

  2. я пізніше перепишу одним.

43 Востаннє редагувалося Faraon (12.01.2015 17:50:39)

Re: плавне переміщення зображення в точку натиску миші

quez написав:
Faraon написав:
quez написав:

А нащо взагалі тримати координати в базі?

Для того щоб зберегти де саме персонаж гравця був останій раз. Просто це буде якось тупо гравцю уожний раз стартувати з координат 0:0. А що? У Вас є інша ідея?

Що за жанр такий у вашої гри? Мабуть щось оригінальне.

Action/RPG. Так, вирішив щось оригінальне зробити.

44

Re: плавне переміщення зображення в точку натиску миші

Sensetivity написав:
Faraon написав:

Доречі, я виявив ще одну помилку в коді через що швидкість не була стала. Моє наступне питання також повязане з виправленням цієї помилки. Чому так відбувається?:

<?php
if(isset($_GET['id_clic']))
{
    $get_id_clic = $_GET['id_clic'];
    $query = mysql_query("UPDATE users SET `house`='$get_id_clic' WHERE login='$login' ")  or die("Савсэм плохо: " . mysql_error());
}
?>


<div id=update_us>
<?php
    $query = mysql_query("select * from users where login='$login'")or die("stop: ".mysql_error);
    $row_users = mysql_fetch_array($query);
    $user_reg = $row_users['city'];
    $id_clic = $row_users['house'];
    
    $click_img = mysql_query("select * from city where id='$id_clic'")or die("stop: ".mysql_error);
    $row_click_img = mysql_fetch_array($click_img);
    $click_img_x = $row_click_img['x'];
    $click_img_y = $row_click_img['y'];
?>
</div>



<div id=top_right>
 <?php echo $row_click_img['x']?> // при кожному клику по силці через що і відбувається обновлення блоку на екран виводиться нове значення змінної, так і має бути
<?php echo $row_click_img['у']?>
</div>


<script type="text/javascript">
function loc(id){
// відправляємо гет запит
    $.ajax({
        type: "GET",
        url: "game.php",
        data: "id_clic="+id,
    });
        
//оновлюємо два блоки для того щоб отримати нові значення змінних з бази
    $("#update_us").load("game.php #update_us"); 
    $("#top_right").load("game.php #top_right");    
 }


function setPosition(obj, x, y) {    
...
//ці змінні цілий час мають одне і теж саме значення яке отримали при загрузці сторінки, але $row_click_img['x'] та $row_click_img['у'] уже мають інше значення і це значення виводить на екран
        ruch_left = (<?php echo $row_click_img['x']?>+<?php echo $row_click_img['width']/3; ?>)+'%';
        ruch_top = (<?php echo $row_click_img['y']?>+<?php echo $row_click_img['height']-5; ?>)+'%';
...
}
</script>

<a href='#' onclick=loc($id_dom);return false> => </a> //На екрані є кілька таких силок в яких значення 
//змінної id_dom є різні. При клику на них ці значення записуються в базу. після чого обновляється блок в 
//якому ми получаємо нові значення зміних. Потім ці змінні ми виводимо на екран для того щоб впевнитися що
// при клиці ми зразу ж отримали нові значення змінних. І все правильно виводить, але в тому куску коду який заключається в <script type='text/javascript'> </script> значення змінних по невідомих для мене причинах чомусь не хочуть мінятися!
  1. В коментарях ви описуєте змінну як id_dom, а в самому JS ви назвали її $id_dom , зі знаком долара, що не властиво для JS.

  2. Щодо коду в блоці <div id=update_us> Чому б не витягнути інформацію одним запитом, замість 2-х ?

М... я щось не зрозумів 1).  в js в мене не має $id_dom. ось функція в яку передається ця змінна:

 function loc(id){
    onclick_img = 'true'; //якщо нажав то змінна має значення true
    
    $.ajax({
        type: "GET",
        url: "game.php",
        data: "id_clic="+id,
    });
        
    $("#update_us").load("game.php #update_us"); // обновлямо без перезагрузки сторінки блок update_us    
    $("#top_right").load("game.php #top_right"); // обновлямо без перезагрузки сторінки блок update_us    
 }

45

Re: плавне переміщення зображення в точку натиску миші

коли ви посилаєте якісь дані через $.ajax по замовчуванню вони надсилаються асинхронно, і для того щоб зробити якісь дії уже після того як сервер обробив ваш запит необхідно використовувати калбеки. Ось приклад типового запиту

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})
  .done(function( msg ) {
    alert( "Data Saved: " + msg );
  });

більш детальніше можна переглянути тут http://api.jquery.com/jquery.ajax/, цей приклад також з цієї документації. Також можна глянути на $.get і $.post. Просто можливо що ви обновлюєте сторінку раніше ніж у вас встигають зберегтись дані в базу. Але це не факт, я не знаю php тому не зміг розібратись в вашому коді.

Подякували: Faraon1

46 Востаннє редагувалося Faraon (12.01.2015 21:48:12)

Re: плавне переміщення зображення в точку натиску миші

truesupport написав:

коли ви посилаєте якісь дані через $.ajax по замовчуванню вони надсилаються асинхронно, і для того щоб зробити якісь дії уже після того як сервер обробив ваш запит необхідно використовувати калбеки. Ось приклад типового запиту

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
})
  .done(function( msg ) {
    alert( "Data Saved: " + msg );
  });

більш детальніше можна переглянути тут http://api.jquery.com/jquery.ajax/, цей приклад також з цієї документації. Також можна глянути на $.get і $.post. Просто можливо що ви обновлюєте сторінку раніше ніж у вас встигають зберегтись дані в базу. Але це не факт, я не знаю php тому не зміг розібратись в вашому коді.

Дякую, силка не працює) видаліть кому в кінці.

Просто можливо що ви обновлюєте сторінку раніше ніж у вас встигають зберегтись дані в базу.

Дані успішно записуються в базу. Проблема полягає в тому що змінні $row_click_img['x'] та $row_click_img['у'] які отримали свої значення при загрузці сторінки з div блоку не хочуть їх міняти на нові значення навіть тоді коли я обновив блок div де вони і отримали ці значення.

47 Востаннє редагувалося Faraon (17.01.2015 19:44:23)

Re: плавне переміщення зображення в точку натиску миші

Зробив так:

<a href='#' onclick=loc($id_dom);return false> => </a>
<div id="test">
 
</div>
 
function loc(id){
        onclick_img = 'true'; //якщо нажав то змінна має значення true
        $.ajax({
            type: "POST",
            url: "test.php",
            data: { id_clic: id }
            })
            .done(function( msg ) {
                $('#test').html( msg );
            });
            $("#top_right").load("game.php #top_right"); // обновлямо без перезагрузки сторінки блок top_right  
return false;
    
 
    };

test.php

<?php
session_start();
include ("cone.php");
    $login = $_SESSION['login'];
 
    if(isset($_POST['id_clic']))
{
    $get_id_clic = $_POST['id_clic'];
    $query = mysql_query("UPDATE users SET `house`='$get_id_clic' WHERE login='$login' ")  or die("Савсэм плохо: " . mysql_error());
  
 
    $query = mysql_query("select * from users where login='$login'")or die("stop: ".mysql_error);
    $row_users = mysql_fetch_array($query);
    $user_reg = $row_users['city'];
    $id_clic = $row_users['house'];
        
    $click_img = mysql_query("select * from city where id='$id_clic'")or die("stop: ".mysql_error);
    $row_click_img = mysql_fetch_array($click_img);
    $click_img_x = $row_click_img['x'];
    $click_img_y = $row_click_img['y'];
} 
?>

але все одно... так як і колись змінні не змінюють свого значення

48

Re: плавне переміщення зображення в точку натиску миші

Питання таке:
Чи можна зробити так щоб функцiя приймала чотири параметра?  Ось так:

        $.ajax({
            type: "POST",
            url: "test.php",
            data: { id_clic: id }
            })
            .done(function( msg1, msg2,  msg3,  msg4 ) {
                ...
            });

хiба для цього не достатньо передати чотири пост запити?

data: { id_clic: id,  id_clic2: id2,  id_clic3: id3,  id_clic4: id4, }

???

49

Re: плавне переміщення зображення в точку натиску миші

ви можете зробити так

.done(function(response) {
var item1 = response.item1;
var item2 = response.item2;

});

І ще одне


синтаксис

{property: value}

означає що ви створили клас в якого є поле з назвою проперті зі значенням value

тому я не зовсім розумію що ви хотіли сказати цим рядком

data: { id_clic: id,  id_clic2: id2,  id_clic3: id3,  id_clic4: id4, }

і фразою про 4 потс запити

Подякували: Faraon1

50 Востаннє редагувалося Faraon (03.02.2015 10:31:44)

Re: плавне переміщення зображення в точку натиску миші

м... нiчого про це не знав. Якщо можете скажiть менi де можна про це почитати.
Я думав що цим кодом:

 $.ajax({
            type: "POST",
            url: "test.php",
            data: { id_clic: id }
            })
            .done(function(msg) {
                ...
            });

ми відправляємо пост запит id_clic із значенням яке мiститься в id, а потiм получаємо в function(msg){} значення яке виводиться на екран, msg це начеб то змiнна в якiй мiститься отримана вiдповiдь на пост запит який ми вiдправили.
Менi потрiбно вiдправити пост запит в файл тест.PHP, а потiм назад отримати чотири значення якi потрiбно записати в 4 змiннi наприклад name1, name2, name3, name4

51

Re: плавне переміщення зображення в точку натиску миші

truesupport написав:

ви можете зробити так

.done(function(response) {
var item1 = response.item1;
var item2 = response.item2;

});

І ще одне


синтаксис

{property: value}

означає що ви створили клас в якого є поле з назвою проперті зі значенням value

тому я не зовсім розумію що ви хотіли сказати цим рядком

data: { id_clic: id,  id_clic2: id2,  id_clic3: id3,  id_clic4: id4, }

і фразою про 4 потс запити

а як нам виводити інформацію в файлі тест.PHP так щоб ми могли її розкласти по змінних:

var item1 = response.item1;
var item2 = response.item2;

52

Re: плавне переміщення зображення в точку натиску миші

http://stackoverflow.com/a/4064468

Подякували: Faraon1

53 Востаннє редагувалося Faraon (03.02.2015 18:32:34)

Re: плавне переміщення зображення в точку натиску миші

truesupport написав:

http://stackoverflow.com/a/4064468

Я так пробував. Пише що змінна не визначена. в двох випадках alert
javascript:

    $.ajax({
        type: "POST",
        url: "update_map.php",
        data: { mas_coord: id }
    }).done(function(response) 
    {    
        var x_coord = response.new_x;
        var y_coord = response.new_y;
        alert(x_coord);
        alert(y_coord);
    });

test.php

<?php
include ("cone.php");
    $login = "///";

    if(isset($_POST['mas_coord']))
{
    $id_dom = $_POST['mas_coord'];
    $query = mysql_query("UPDATE users SET `house`='$id_dom' WHERE login='$login' ")  or die("Савсэм плохо: " . mysql_error());
    
    $query = mysql_query("select * from users where login='$login'")or die("stop: ".mysql_error);
    $row_users = mysql_fetch_array($query);
    $user_reg = $row_users['city'];
    $id_clic = $row_users['house'];
        
    $click_img = mysql_query("select * from city where id='$id_clic'")or die("stop: ".mysql_error);
    $row_click = mysql_fetch_array($click_img);
    
    $result =  array("new_x" => $row_click['x'], "new_y" => $row_click['y']);
    echo json_encode($result);
}    
    ?>

54

Re: плавне переміщення зображення в точку натиску миші

блін... забув написати

header('Content-type: application/json');

Все працює. Дякую.

55

Re: плавне переміщення зображення в точку натиску миші

Питання наступне...
Коли ми кликаємо по мапі то перс плавно без всяких там  зупинок переміщається в місце натиску миші, а коли ми кликамо по картинці (будівлі) тим самим визиваємо функцію loc в які відбувається обчислення координат переміщення перса до будівлі то відбувається зупинка перса десь на 3 сек. Я розумію що це через те що рух відтворюється тільки тоді коли ми отримаємо відповідь на наш пост запит який ми відправляємо

    $.ajax({
        type: "POST",
        url: "update_map.php",
        data: { coordBud: id }
    }).done(function(response) 
    {    
        var x_coord = parseInt(response.new_x, 10)+parseInt(response.width, 10)/2+'%'; // вичисляєм координати по х враховуючи ширину будівлі (response.width)
        var y_coord = parseInt(response.new_y, 10)+parseInt(response.height, 10)-5+'%'; // вичисляєм координати по у враховуючи висоту будівлі (response.height)
        
        $( "#pers_xy" ).animate({//відтворюємо анімацію
            left: x_coord,
            top: y_coord,
        }, 5000);
        updatePosition(x_coord, y_coord);
    });

Що ви можете порадити щоб цієї затримки в анімації не відбувалося?

56

Re: плавне переміщення зображення в точку натиску миші

Ну раз розумієте, то в чому проблема?

І взагалі, спробуйте мені пояснити, чому персонаж чекає відповіді сервера на відправку координати будівлі?

57

Re: плавне переміщення зображення в точку натиску миші

quez написав:

Ну раз розумієте, то в чому проблема?

І взагалі, спробуйте мені пояснити, чому персонаж чекає відповіді сервера на відправку координати будівлі?

Я трішки Вас поправлю... персонаж чекає не на відправку координат будівлі, а на їх отримання разом з шириною, висотою бідівлі. Ці координати потрібні для того щоб перс не зупинявся на самій будівлі де було клацнути, а щоб вони використовувалися для обрахування місця зупинки перед будівлею.
Я розумію чому це стається, але як цьому зарадити я не знаю. Думав поставити чергу виконання функцій, але думаю що це не те що треба

58

Re: плавне переміщення зображення в точку натиску миші

А, тоді передавайте координати та розміри будівель при завантаженні карти.

59

Re: плавне переміщення зображення в точку натиску миші

quez написав:

А, тоді передавайте координати та розміри будівель при завантаженні карти.

Не знаю чи правильно вас зрозумів... Ви кажете щоб при першому завантажені сторінки ми витягували з бази і зберігали всі координати будівль та їх розміри в масиві? В ігрі має налічуватися близько  1000 бідівль. Я роблю карту на якій будуть відображатися містечка (їх буде десь 250шт) в кожному містечку буде по 4-8 будівль. Не враховуючи відображення дерев, камінів, різних перешкод які перс має обходити. Вони також витягуються з бази тим самим методом що й будівлі/містечка

60

Re: плавне переміщення зображення в точку натиску миші

І це по-вашому дуже багато?

Але якщо вирішите, що це таки дуже багато, то витягуйте лише ті, які знаходяться поруч, до яких перс може дістатись, скажем, за 5 секунд.

Подякували: Faraon1