当前位置:首页 > 日记 > 正文

jQuery拼图游戏

jQuery拼图游戏
源代码分析:

{ { 1 }如何生成图片网格,我想有两种方法:

(1)把这个大图片分成16小块,然后用img标签的src

(2)只有一个大的图片,然后每个元素的背景图是削减和CSS背景位置的定位,这就需要16个数组{ 0 },{ - 150,0 },{ - 300,0 }…

图像背景位置和阵列位置阵列的{ }阵列

在选用css时生成数据位置图。

所需的CSS背景定位阵列:{ 0 },{ - 150,0 },{ - 300,0 },{ - 450,0 },

{ 0,- 150 },{ - 150,- 150 },{ - 300,- 150 },{ - 450,- 150 },

{ 0,- 300 },{ - 150,- 300 },{ - 300,- 300 },{ - 450,- 300 },

{ 0,- 450 },{ - 150,- 450 },{ - 300,- 450 },{ - 450,- 450 }

它们用于{ 0,- 150,- 300,- 450 }值(这是我的定义图片高,宽度150倍,所以数值)将通过自动生成数组{这个值使用}。

复制代码代码如下所示:

/ / this.ncol这里是4 -因为我的拼图是4 * 4

/ / this.narea是150,每一张图片的宽、高(600px / 4)600×600大

var L = { },

p={ };

对于(n = 0 n<VaR;this.ncol;n + +){

L.push(N *(这个面积+ 1)); / /阵列布局定位{ 0151302453 }网格生成,因为我需要边界效应(图中绿色边框),所以用CSS定位背景的阵列是不一样的

P.push(N *。Narea); / / 150,生成{ 0,300,450 }上面所说的,CSS背景的价值取向

}

对于(var i = 0;i < this.nlen;i++){ / / this.nlen 16

var t = parseInt(我/本。ncol),

K =我这。ncol * T,

ap = },

al = };

AP.push(P { } { } P K,T,I); / /我把CSS的附加背景取向排列的我,是在判断第三步,不需要设置CSS属性,我把它作为在{ bg-i标签属性}

AL.push(L { k },我{不});

这abgp {我} = AP;

这种布置{我} =铝;

}
{三}判断它是否完成

二元(DIV)利用CSS背景定位,abgp { 1 }({ } - 150,0,1价值),而这是随机分配的布局位置。ALayout { 3 }(其中3是随机生成的)(值{ 453,0 }),然后左:453px,顶:0。

移动元素,改变是左,最高价值,而不是为了结构自身获得左元素,最高值(如果是移到左边:151px,顶:0本。ALayout { 1 }),然后用{ }(1 151,0价值指数,这本身属性是{ } = 1这bg-i。abgp { 1 }指标)判断,相等的元素移动后的位置是正确的。

详细的代码:

复制代码代码如下所示:

*

版本:2

* /

功能gypuzzlegame(选项){

this.target = $(选择目标);

this.data = option.data; / /图片资料

this.opt =选项;

this.nlen = option.count; / /多少的拼图

this.acollayout = option.acollayout { 0151302453 } / / | |水平阵列布局;

this.arowlayout = option.arowlayout { 0151 } / / | |;垂直阵列布局

this.acolbgp = option.acolbgp | | { 0,150,300,450 }; / /水平阵列布局

this.arowbgp option.arowbgp { 150 } = 0; / / | |,垂直阵列布局

this.ncol = this.acollayout.length;

this.nrow = this.arowlayout.length;

this.alayout = {}; / /阵列布局

this.abgp = {}; / / CSS背景定位数组

This.init();

}

gypuzzlegame.prototype = { {

GetRand:功能(A,R){

VaR序列= a.slice(0),

newarry = { };

对于(var n=0;n < r;n + +){

VaR NR = parseInt(Math.random()*数组长度);

NewArry.push(哈利{ NR });

Arry.splice(NR,1);

}

返回newarry;

},

SETPOS:函数(){

对于(var i = 0;i < this.nlen;i++){

var t = parseInt(我/本。ncol),

L =我这。ncol * T,

ap = },

al = };

AP.push(这个。acolbgp {我},这。arowbgp {T},我);

AL.push(这个。acollayout {我},这。arowlayout {T});

这abgp {我} = AP;

这种布置{我} =铝;

}

},

伊斯帕斯:功能(项目){

无功_that =这,

=0;

item.each(函数(){()

var = parseInt($(this)。Css(右)),

T = parseInt($(this)。Css(最重要的)),

我= parseInt($(this)。Attr('data-bgi '));

如果(L = = _that。ALayout {我} { 0 } T = = _that。ALayout {我} { 1 }){

是++;

}

});

回报是;

},

CreateDom:函数(){

无功规划= this.getrand(this.alayout,这。nlen);

/ / console.log(布局);

对于(n = 0 n<VaR;this.nlen;n + +){

var t = parseInt(n /本。ncol),

L = N -这。ncol * T;

var = $()。

CSS({右:布局{ } { 0 } + 'px,

顶:布局{ } { 1 } + 'px,

背景图像:'url(+本。数据+ ')',

背景:这个位置。abgp { } { 0 } + 'px++本。abgp { } { 1 } + 'px

});

This.target.append(HTML);

}

},

移动:函数(){

var div =美元this.target.find('。puzzle_list),

这_that =;

无功haselem =函数(){()

var = false;

div.each美元(函数(){()

如果($(this)。HasClass()){

T=真;

}

});

返回T;

};

单击

div.click美元(函数(){()

var $ = $(这个);

如果(haselem()!this.hasclass美元()){

var(=);

如果(div.eq美元(指数),(':动画)| |这个美元(':动画)){

返回false;

}

var = div.eq美元(指数),位置(leave的过去式和过去分词),

T = div.eq美元(指数),位置(顶部),

MYL = this.position美元(leave的过去式和过去分词),

MYT = $ this.position(顶部);

$(这)。动画({右:L,' ':T });

$div.eq (index).Css ({'z-index':'1'}).Animate ({'left': myl,'top': myt}, function ()) {

$(这)。RemoveClass();

$(这)找到('span)删除();

$(这)。Css({ 'z-index':‘0'});

如果(_that.ispass($ DIV)= = _that。nlen){

如果(typeof _that.opt.success = = 'function){

_that.opt.success({目标:_that。目标});

}

}

});

}

{其他

如果($ this.hasclass()){

this.removeclass美元();

this.find美元('span)删除();

}

{其他

this.addclass美元()。追加();

}

}

});

},

init:函数(){

设置CSS背景位置和布局数组元素

This.setPos();

创建元素

This.createDom();

移动图片

This.move();

}

}

调用示例

新的gypuzzlegame({

数据:'images / 03。JPG,

目标:#霸',

伯爵:8,

成功:函数(选择){

Opt.target.append('congratulations通');

}

});

相关文章

新手指南:优秀的平面设计师是如何制

新手指南:优秀的平面设计师是如何制

平面设计师,新手,优秀,指南,电脑软件,一个优秀的平面设计师如何做到这一点这篇文章是结合我自己的经验写成的。非常实用,适合初学者。 一个优秀的平面设计师如何做到这一点本设计是根据自己的收藏和文章,结合自己的经验写成的。非常实用。新…

百度互联网环境广告技巧(教程)

百度互联网环境广告技巧(教程)

互联网,教程,百度,环境,技巧,百度的广告很有技巧。我们好好谈谈吧。 最近,学生的产品用户体验团队部进行了一系列的广告环境的研究,在优化网络广告更加科学的方法,在改进的同时,互联网的用户体验,提升广告效果,广告主和用户形成一个双赢的局面。…

对DOM元素的属性属性jQuery操作详

对DOM元素的属性属性jQuery操作详

属性,方法,操作,元素,详细,jQuery中操作元素属性的方法: attr():读或写的匹配元素的属性值。 RemoveAttr():从匹配的元素中删除指定的属性。 attr()方法读取操作 attr()读操作。读取是匹配元素中第一个元素的指定属性值。 格式:.attr(属性),返回值类型:…

PS图象处理软件简单的的人成为五彩

PS图象处理软件简单的的人成为五彩

释放,的人,图象,处理软件,简单,本教程介绍朋友PS图象处理软件简单的图片的人成为五彩线释放效果的教程,比较基础,淘宝天猫设计师值得学习,以下建议按照教程一起学习吧。 本教程介绍朋友的朋友关于这个教程是PS图象处理软件简单的图片的人成为…

对http.response.write方法在Node.

对http.response.write方法在Node.

使用说明,方法,电脑软件,response,http,方法显示: 将响应内容发送给请求的客户机。 在response.end(),response.write()可以执行多次。 Grammar: 复制代码代码如下所示: response.write(块编码,{ }) 参数: 块是表示发送内容的缓冲区或字符串。 …

对fs.rmdirsync方法在Node.js的使

对fs.rmdirsync方法在Node.js的使

使用说明,方法,电脑软件,fs,rmdirsync,方法显示: 删除同步的版本()。 返回值为null或未定义,表示删除成功,否则将抛出异常。 Grammar: 复制代码代码如下所示: Fs.rmdirSync(路径) 由于此方法属于fs模块,因此需要在使用之前引入FS模块(var FS =需…

PS图象处理软件制作的金头钉标志教

PS图象处理软件制作的金头钉标志教

教程,图象,处理软件,标志,电脑软件,金头钉Lo是用PS图象处理软件的,主要介绍了图层样式的修改和钢笔工具的使用。 新文档400x400像素,白色背景,建立一个新层,绘制一个椭圆选区填充# 838181。 添加图层样式。 效果如下。 建立一个新层,画一个椭…

CDR是一个壮观的例子,对starspace浩

CDR是一个壮观的例子,对starspace浩

是一个,壮观,宇宙,例子,电脑软件,本教程介绍给一位朋友,他使用CDR来创造壮观的宇宙天空方法。教程制作的宇宙仍然壮观。难度不是很大。新手也可以过来学习,推荐它,并跟着教程学习。 本教程将介绍CDR来创造壮观的宇宙天空过程。这个教程不是很…

jQuery中的Ajax如何返回结果而不是

jQuery中的Ajax如何返回结果而不是

回调,执行,返回结果,顺序,而不是,因为默认Ajax是异步的,也就是说,当它不响应结果时,它不影响向下执行,因此必须通过回调的方式来完成。 如果你不想返回的结果,参数异步Ajax变为假,这是在相同的顺序执行,它可以返回的结果如下。 然而,这种做法在不…

烟花制作网页新闻盒教程

烟花制作网页新闻盒教程

教程,烟花,制作网页,新闻,电脑软件,本教程是介绍给朋友的,用烟花制作网页新闻广播盒教程。结果很好,方法也很简单。很适合初学者学习,推荐大家一起学习。 本教程是介绍给朋友的,利用烟花制作的网络新闻广播框简单,很适合初学者学习。 我说了一…

QQ空间(WM)软件在手机上的功能是什么

QQ空间(WM)软件在手机上的功能是什么

空间,机上,在手,功能,电脑软件,QQ空间(WM)软件在手机上的功能是什么 手机的QQ空间(WM)软件版本具有以下功能: 1、QQ空间登录、帐号注销、帐号删除等帐号管理功能; 2。个人中心动态浏览、评论回复和详细视图功能。 三.快速写作,写作,拍照和上传…

readonly和残疾之间的小差异的详细

readonly和残疾之间的小差异的详细

解释,残疾,差异,详细,电脑软件,只读和残疾人可以让用户无法在形式领域变革的内容,但它们之间仍有一定的差异。这里有一个详细的介绍给你。 无论是只读的,残疾人可以使得用户无法在表单域的含量变化,但它们之间有细微的差别,现总结如下: ReadOn…