1

我正在使用 .animate 尝试创建基于图块的游戏。我正在将 jQuery 与另一个 ajax 脚本混合以尝试使其工作。我一直单击箭头移动但没有得到任何结果。也许其他人会明白为什么?

纽扣:

$data .= "<center><table><tr><td></td><td><button onclick=\"transition(\'up\')\">&uarr;</button></td> <td></td></tr><tr><td><button onclick=\"transition(\'left\')\">&larr;</button></td> <td></td> <td><button onclick=\"transition(\'right\')\">&rarr;</button></td></tr><tr><td></td> <td><button  onclick=\"transition(\'down\')\">&darr;</button></td> <td></td></tr></table></center>";

地图:

$data .= "<div style=\'width:480px;height:480px;background-color:#000000;background-image:url(".$map['background'].");padding:".$map['locationpadding'].";\' id=\'locationMap\'>";


$data .= "<div id=\'specialLocations\'></div>";


$data .= "<div style=\'position:absolute;left:".$charrel[0]."px;bottom:".$charrel[1]."px;width:32px;height:32px;background-image:url(".$char['charimage'].");\' id=\'charLocation\'></div>";


$data .= "</div>";

最后,得到动画。我已经确保 if 语句都正常工作。所以到目前为止一切正常。

if($_POST['direction'] == "up"){

        print("$('#charLocation').animate({'bottom': '+=50px'}, 'slow');");

    }elseif($_POST['direction'] == "left"){

        print("$('#charLocation').animate({'left': '-=50px'}, 'slow');");

    }elseif($_POST['direction'] == "right"){

    print("$('#charLocation').animate({'left': '+=50px'}, 'slow');");

    }elseif($_POST['direction'] == "down"){

    print("$('#charLocation').animate({'bottom': '-=50px'}, 'slow');");

    }else{
        die('alert("Invalid movement.");');
    }

通过 PHP 打印 jQuery/JavaScript 代码的原因是所有内容都是通过 Ajax 代码加载的,所以我从不打印。

很抱歉提前给您带来任何困惑,并感谢您为我查看此内容。

4

1 回答 1

1

我认为问题在于您使用这些语言制作游戏的方法。如果您想在基于 Web 的瓷砖游戏中移动角色,您应该控制前端客户端中的所有游戏逻辑 - 在本例中为 javascript - 并且仅使用 ajax 将关键游戏信息推送到服务器。例如,如果你移动一个棋子,你只在动画完成时发布新的棋子坐标,而不是调用 ajax 并执行从服务器返回的任何内容。

我认为在这种情况下无法提供示例,因为这是您方法基础的问题。

如果你有具体问题,我可以回答。要回答您当前的问题 - 将一行 javascript 作为 ajax 请求打印不会自动将响应作为 javascript 执行,也不应该如此。不要试图让它以这种方式工作。相反,重组您的方法以不需要这种行为来操作。

于 2012-12-14T01:33:00.573 回答