jQuery .animate()没有执行

时间:2012-12-14 01:22:30

标签: jquery

我正在使用.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代码加载的,因此我永远不会打印。

对于任何提前混淆的事感到抱歉,感谢您为我查看。

1 个答案:

答案 0 :(得分:1)

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

我不认为在这种情况下可以提供一个例子,因为这是你的方法基础的一个问题。

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