【发布时间】:2013-01-26 14:46:15
【问题描述】:
我有以下问题。 我正在开发一个基于浏览器的小型游戏,并使用键盘键添加了移动。 它正在工作,但现在我想添加一个代码,它将播放器的当前位置发送到 MySQL 数据库。 问题是,当我按下按钮(例如 W)时,我的角色一直向上移动,并且每一步他都会向 MySQL 发送数据,从而创建一个长长的 PHP 请求列表。 我怎样才能加快这个过程? 这是我使用的部分代码:
if (key == key_W) { // Player Up
if (parseFloat(wzr.style.top)-6 < 0)
{
$('#wzro').stop().animate({
top: 342
}, 0, function() {
$('#wzro').empty();
});
YWalk();
}
else
{
$('#wzro').stop().animate({
top: '-=6'
}, 0, function() {
$('#wzro').empty();
});
YWalk();
}
}
function YWalk(){
var wzr = document.getElementById("wzro");
var xmlHttp;
if (window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("GET","datachodzeniey.php?y="+ wzr.style.top);
xmlHttp.send(null);
}
在 datachodzeniey.php 中:
<?php
session_start();
$username = $_SESSION['username'];
$y=$_GET['y'];
$connect = mysql_connect("localhost", "root", "");
$select_db = mysql_select_db("testdb", $connect);
$q=mysql_query("update players set y='$y' where dispname='$username'");
?>
【问题讨论】:
-
检查用户上次运行 YWalk 函数的时间并根据该值保存数据。
-
为什么
.animate(...)的持续时间 == 0?当然.css(...)更合适。有了这个和其他的简化,我可以把上面的所有东西都减少到 8 行代码。
标签: php javascript jquery html mysql