jquery实现qq炫舞功能
我想用jquery 控制一个对象a在 一条有背景色的轨迹b上运动 当运动到某个长度的时候判断 是否依次按下了下面的图标箭头 每个箭头都是一个图片 每个图片都是一个对象 把这些对象放在一个数组里面
当a运动到指定的距离时 实现ajax提交表单 然后获取提交的数组 循环判断是否正确
感兴趣的一起搞下
sola缘尽
10 years, 8 months ago
Answers
我用DIV实现的 很简陋 Chrome下可以用 其实这个可以用第三方类库来写 这样效果更流畅
http://raphaeljs.com/
Raphaël
感觉这个跟服务端交流的话 不仅不靠谱 还容易增大服务器流量 事实上这个用(new Date()).getTime() 来获取的话也是不靠谱的 因为js对于时间无法控制到很精确 特别是毫秒级的 你比如设置移动时间为500ms 结果物体走到那用了600ms 就容易造成误判
这个可以用闭包保护变量 但是数值初始化又是一个问题 如果这个想做真正的公平的游戏那是不可能的 毕竟你源代码就在那 用户看一下就知道了 所以本地判断提交到服务端 服务端初始化数据是最好的选择 当然也可以完全本地端
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>测试</title> <script type="text/javascript"> keyMap = { '37' : '左', '38' : '上', '39' : '右', '40' : '下' }; window.shunxu = 1; window.action = [0,37,40,37,39]; window.fengshu = [0,0,0,0,0]; window.onload = function(){ (function move(){ var b = document.getElementById('ball'); var l = document.getElementById('line'); posX = b.style.left == ""?0:parseInt(b.style.left,10); b.style.left = (posX + 1) + 'px'; if(posX <= 979){ setTimeout(move,1); }else{ alert('你的分数为'+window.fengshu); } })(); window.addEventListener('keydown',addKey,true); } function addKey(){ var e = window.event || arguments[0]; if(window.shunxu <= 4){ window.fengshu[window.shunxu] = (window.action[window.shunxu] === (e.keyCode) && (Math.abs(document.getElementById('ball').offsetLeft - document.getElementById('ball_'+window.shunxu).offsetLeft) <= 10))?10-Math.abs(document.getElementById('ball').offsetLeft - document.getElementById('ball_'+window.shunxu).offsetLeft):0;//判断分数 第一是按键正确 第二是距离元素像素范围-10 - 10之间 0为正中心 console.log(document.getElementById('ball').offsetLeft - document.getElementById('ball_'+window.shunxu).offsetLeft); window.shunxu++; }else{ console.log('俺关了'); } } </script> <style type="text/css"> #line{width:1000px; height:20px; border:1px solid #eee;} #ball{height:20px; width:20px; background:#333; position:relative; top:0px; left:0px; z-index:1000;} #ball_1{height:20px; width:20px; background:#fefefe; position:relative; top:-20px; left:200px;z-index:1; text-align:center; line-height:20px;} #ball_2{height:20px; width:20px; background:#fefefe; position:relative; top:-40px; left:400px;z-index:2; text-align:center; line-height:20px;} #ball_3{height:20px; width:20px; background:#fefefe; position:relative; top:-60px; left:600px;z-index:3; text-align:center; line-height:20px;} #ball_4{height:20px; width:20px; background:#fefefe; position:relative; top:-80px; left:800px;z-index:4; text-align:center; line-height:20px;} </style> </head> <body> <div id="line"> <div id="ball"></div> <div id="ball_1">←</div> <div id="ball_2">↓</div> <div id="ball_3">←</div> <div id="ball_4">→</div> </div> </body> </html>
赏你颗大白兔
answered 10 years, 8 months ago