JS 连锁泡泡 v1.1

泡泡的移动,碰撞,消失都完成了,越写越觉得没意思,后面的关于游戏性的东西(比如游戏有多少关,打破多少泡泡算过关)就懒得写了。有兴趣的朋友可以读一下,因为很多地方用到闭包修正setInterval(这个函数比较贱)。面向对象,注释比较完整。

原创JS连锁泡泡 v1.1

body{
margin: 0px;
padding: 0px;
background-color: #000;
}
#main{
border: solid red 0px;
width: 800px;
height: 600px;
font-size: 48px;
position: absolute;
background-color: #fff;
}
.little{
height: 15px;
width: 15px;
font-size: 1px;
border: solid #ccc 0px;
position: absolute;
left: 100px;
top: 100px;
background: url(/upload/20090928170442418.gif) no-repeat;
filter: alpha(opacity=30);
}
.big{
height: 61px;
width: 61px;
font-size: 9pt;
border: solid #ccc 0px;
position: absolute;
left: 0px;
top: 0px;
background: url(/upload/20090928170442175.gif) no-repeat;
/**使显示的分数居中**/
line-height: 61px;
color: #fff;
filter: alpha(opacity=30);
}
#info{
position: absolute;
left: 820px;
top 20px;
border: solid #fff 1px;
height: 600px;
width: 300px;
color: #fff;
padding: 5px;
}
#score{
float: right;
border: solid #ccc 1px;
height: 10px;
width: 80px;
margin: 5px;
font-size: 30px;
}

0

原创JS连锁泡泡 v1.1

原创作者 sunxing007

转载请务必注明来自:

http://blog.csdn.net/sunxing007

开发环境:IE8 暂时没有考虑兼容性

/*******************************************************
* 原创JS连锁泡泡 v1.1
* 原创作者 sunxing007
* 转载请务必注明来自:http://blog.csdn.net/sunxing007
*******************************************************/
var doc = document;
function $(id){return doc.getElementById(id)};
var container = $('main');
var score_ele = $('score');
try{
//针对ie6缓存背景图
document.execCommand("BackgroundImageCache", false, true);
}catch(e){alert(e)};
/*******************************************************/
//系统参数
//小泡泡半径
var little_radius = 7;
//爆炸后的泡泡半径
var big_radius = 30;
//半径差
var delta_radius = big_radius - little_radius;
//容器宽度
var container_width = 800;
//容器高度
var container_height = 600;
//与定义的泡泡移动的4个方向
//[x,y]代表x方向的增量和y方向的增量,也就确定了移动方向
var direct = [[1,1],[1,-1],[-1,1],[-1,-1]];
//爆炸后的泡泡集合
var chained_bubbles = [];
//所有的泡泡 方便管理
var all_bubbles = [];
/*****************************************************/
//泡泡模型
function Bubble(left, top, bgPos, score, dirIndex){
var ele = doc.createElement('div');
ele.align = 'center';
ele.className = 'little';
ele.style.left = left + 'px';
ele.style.top = top + 'px';
this.bgPos = bgPos;
ele.style.backgroundPositionX = -bgPos*(little_radius*2+1);
this.element = ele;
ele.bubble = this;
this.score = score;
this.exploded = false;
this.dirIndex = dirIndex;
this.container.appendChild(ele);
this.container.onclick = function(){
if(window.curBubble){
//curBubble.distroy.apply(curBubble);
chained_bubbles.push(curBubble);
curBubble.explode.apply(curBubble);
curBubble.container.onclick = null;
}
}
ele.onmouseover = function(){
this.style.filter = 'alpha(opacity=100)';
window.curBubble = ele.bubble;

}
ele.onmouseout = function(){
this.style.filter = 'alpha(opacity=30)';
}
}
Bubble.prototype = {
//容器的引用
container: $('main'),
//移动泡泡
move: function(){
if(chained_bubbles.length>0){
for(var i=0; i0){
for(var i=0; i(container_width-big_radius-1-little_radius)||l(container_height-big_radius-1-little_radius)||tl&&pt[i][1]>t&&pt[i][0]

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

转载请务必注明来自:http://blog.csdn.net/sunxing007

(0)

相关推荐

  • JS 连锁泡泡 v1.1

    泡泡的移动,碰撞,消失都完成了,越写越觉得没意思,后面的关于游戏性的东西(比如游戏有多少关,打破多少泡泡算过关)就懒得写了.有兴趣的朋友可以读一下,因为很多地方用到闭包修正setInterval(这个函数比较贱).面向对象,注释比较完整. 原创JS连锁泡泡 v1.1 body{ margin: 0px; padding: 0px; background-color: #000; } #main{ border: solid red 0px; width: 800px; height: 600px

  • JS对HTML表格进行增删改操作

    要求如下: 写一个html页面,里面有一个表格,储存用户信息,包括:用户名,密码,姓名,邮箱,电话,qq,身份证号.  现在要通过js对表格进行动态的增删改查(只是内存操作即可): 首先,加载页面时用js加载3条初始化记录:  有一个增加记录的按钮,点击后弹出一个div层提供输入,要求各字段必须符合输入格式且不能为空:  用户名:英文+数字+下划线:  密码:英文+数字+下划线+6位以上:  姓名:中文:  邮箱,电话,qq,身份证号符合格式:  每条记录有修改.删除:  修改类似增加,要把原来

  • JS 拼图游戏 面向对象,注释完整。

    在线演示 http://img.jb51.net/online/pintu/pintu.htm 复制代码 代码如下: <html> <head> <title>JS拼图游戏</title> <style>     body{         font-size:9pt;     } table{ border-collapse: collapse; } input{     width:20px; } </style> </he

  • 基于Jquery的标签智能验证实现代码

    后经过一段对Jquery的学习,Jquery的强大解决了辅助代码过多不易维护的问题.AutoValidate.JS 复制代码 代码如下: /// <reference path="../Scripts/jquery-1.4.1-vsdoc.js" /> //验证方法 v1.0,创建于2010-12-9 完成2010-12-16 MR.X 制 //修改2010-12-10.2010-12-12.2010-12-15.2010-12-16添入信息提示动画效果 //支持 type

  •  用Vue Demi 构建同时兼容Vue2与Vue3组件库

    目录 前言: 一.Vue Demi 中的额外 API 1.isVue2 and isVue3 二.Vue Demi 入门 前言: Vue Demi 是一个很棒的包,具有很多潜力和实用性.我强烈建议在创建下一个 Vue 库时使用它. 根据创建者 Anthony Fu 的说法,Vue Demi 是一个开发实用程序,它允许用户为 Vue 2 和 Vue 3 编写通用的 Vue 库,而无需担心用户安装的版本. 以前,要创建支持两个目标版本的 Vue 库,我们会使用不同的分支来分离对每个版本的支持.对于现

  • 发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载

    好多天没有发过日志了~  最近写了一个图片浏览器,是为PHPCMS文件管理器设计的,但后来看到了Lightbox,所以就改了一下,可以给一般的网页使用. 演示及说明地址:  http://longbill.cn/down/sample/blueshow/index.htm 使用方法:   1.下载 blueshow.js文件,放到服务器上  你也可以直接使用这个: http://www.jb51.net/downtools/blueshow.js 2.在你要用此程序的网页中写上这句(在和之间):

  • js实现小鱼吐泡泡在页面游动特效

    js小鱼吐泡泡在页面游动 = Pics.length) Pos=0; if (Ns) document.nfish.document.images.nframe.src=Pics[Pos]; else document.images.iframe.src=Pics[Pos]; Timer=setTimeout('AniFish()',50) } function MoveFish(){ H=(document.layers)?window.innerHeight+window.pageYOffs

  • Vue.js实现无限加载与分页功能开发

    本篇文章是一篇Vue.js的教程,目标在于用一种常见的业务场景--分页/无限加载,帮助读者更好的理解Vue.js中的一些设计思想.与许多Todo List类的入门教程相比,更全面的展示使用Vue.js完成一个需求的思考过程:与一些构建大型应用的高阶教程相比,又更专注于一些零碎细节的实现,方便读者快速掌握.致用. 需求分析 当一个页面中信息量过大时(例如一个新闻列表中有200条新闻需要展示),就会产生问题,例如: >数据量过大,影响加载速度 >用户体验差,很难定位到之前自己看过的某篇文章 >

  • tinyMCE插件开发之插入html,php,sql,js代码 并代码高亮显示

    下面就是我开发的过程. 首先,我的 tinyMCE版本是 Version: 3.2.7 (2009-09-22) .下载地址 http://www.jb51.net/codes/17198.htmltinyMCE插入代码,需要调用 tinyMCE的 tinyMCE.execCommand('mceInsertContent',false,value); 方法.其中参数无需改变,value 就是你要插入的内容, 比如我写了一个函数, 复制代码 代码如下: function InsertHTML(v

  • 基于jquery的无限级联下拉框js插件

    灵活性方面考虑了比较多的方面,提供了几个重要的配置方便在各类环境下使用,欢迎各位童鞋使用,源码完全开放.开发这个插件的缘于前段时间维护一个4级级联下拉框被里面200行代码及复杂的结构和bug所郁闷(之所以这么多代码是因为该级联下拉框有时只出现2个或3个),想到这类的需求其实经常都能遇到,jquery里没有这样比较好的插件,索性自己开发个.源代码并不复杂,稍微复杂的地方在第二个插件使用了缓存,造成理解起来十分困难,后面会做些解释. 插件一:适合在不与服务器进行AJAX交互情况使用,需预先将所有下拉

随机推荐