您好,匿名用户
随意问技术百科期待您的加入

jquery实现qq炫舞功能

0 投票

我想用jquery 控制一个对象a在 一条有背景色的轨迹b上运动 当运动到某个长度的时候判断 是否依次按下了下面的图标箭头 每个箭头都是一个图片 每个图片都是一个对象 把这些对象放在一个数组里面
当a运动到指定的距离时 实现ajax提交表单 然后获取提交的数组 循环判断是否正确

感兴趣的一起搞下

用户头像 提问 2012年 12月1日 @ Kog'Maw 上等兵 (212 威望)
分享到:

1个回答

0 投票

我用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>
用户头像 回复 2012年 12月1日 @ Fizz 上等兵 (325 威望)
提一个问题:

相关问题

0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Rammus 上等兵 (334 威望)
+3 投票
1 回复 85 阅读
用户头像 提问 2013年 5月18日 @ 正能量 上等兵 (297 威望)
0 投票
1 回复 28 阅读
用户头像 提问 2013年 11月28日 @ Kha'Zix 上等兵 (269 威望)
+1 投票
1 回复 749 阅读
用户头像 提问 2012年 12月1日 @ Leona 上等兵 (279 威望)
0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Jayce 上等兵 (271 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...