加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

一周学会Mootools 1.4中文教程:(7)汇总收尾

发布时间:2018-10-06 10:41:08 所属栏目:创业 来源:站长网
导读:转眼之间已经第七课了,这也将成为最后一课,假如这7课下来您感受程度没有到达预想的程度,不要紧您可以继承存眷本站的博文,我会延续发一些相同的文章帮您晋升程度,其它我最近规划和群里的几个Mootools喜爱者建造一下Mootools1.4的chm版中文API手册,假如您对此
转眼之间已经第七课了,这也将成为最后一课,假如这7课下来您感受程度没有到达预想的程度,不要紧您可以继承存眷本站的博文,我会延续发一些相同的文章帮您晋升程度,其它我最近规划和群里的几个Mootools喜爱者建造一下Mootools1.4的chm版中文API手册,假如您对此感乐趣可以来群里一路接头(QQ群号:16648471)

我们本日的课程首要讲授一下Mootools的class,由于Mootools的class凡是用于对插件的封装,以是讲完了class之后我会现实开拓一个插件并具体声名插件的开拓进程.
在Mootools中行使Class结构函数建设一个类有两种方法,也就是转达两种差异范例的参数给结构函数,第一种也是尺度方法转达一个工具字面量,这个工具字面量可以包罗你为类添加的全部属性、要领。譬喻:

var Person = new Class({
//初始化
initialize: function (name, age) {
this.name = name;
this.age = age;
},
     //建设一个要领
log: function () {
console.log(this.name + ',' + this.age);
}
});

var mark = new Person('mark', 24);
mark.log(); // returns 'mark,24'

第二种是转达一个平凡函数,mootools会自动把这个函数包装成只含一个initialize键值的工具字面量,然后你可以行使implement要领对类举办扩展,譬喻:

var Person = new Class(function (name, age) {
this.name = name;
this.age = age;
});
Person.implement('log', function () {
console.log(this.name + ',' + this.age);
});
var mark = new Person('mark', 24);
mark.log(); // returns 'mark,24'

虽然保举行使的照旧第一种方法,直观明白。你假如行使尺度方法成立了一个类,也是可以行使implement和Extends对类举办扩展或担任,虽然了这部门内容已经超出了我们一周学会Mootools的领域,以是假如您对此感乐趣可以看官方文档.

接下来我会开拓一个插件,用来演示class的行使.这个插件的结果,请查察下边的文章:

http://www.veryhuo.com/a/view/42563.html

所差异的是,之前我是直接行使function实现的,而此刻是行使class封装过了,下边是实当代码.

<script style="text/javascript" src="http://www.veryhuo.com/uploads/common/js/mootools-yui-compressed.js"></script>
<body id='a'>
<h2 class='a'>Single images</h2>
<div id='bsfdimg' style='background:url("http://www.veryhuo.com/uploads/common/images/wall1.jpg") no-repeat scroll -50px -50px transparent;width:260px;height:200px;' w='392' h='600'></div>
<script type='text/javascript'>
var MoveBKimg=new Class({
initialize:function(){//初始化
this.$L=0;
this.$T=0;
},
Todo:function(i,opt){
this.opt={
bw:opt.bw || 0, //容器宽度
bh:opt.bh || 0,
iw:opt.iw || 0, //图像宽度
ih:opt.ih || 0,
X:opt.X || 0, //鼠标的clientX坐标
Y:opt.Y || 0
};o=this.opt;
if(!i || !o.iw || !o.ih || !o.bw || !o.bh){return false;}

o.iw=o.iw-o.bw; //图像现实可被移动的x轴范畴
o.ih=o.ih-o.bh;

var P=i.getStyle('background-position');P=P.split(" ");//取得今朝配景图的position值,并拆分转为Int型
P[0]=P[0].toInt();P[0]=(P[0].abs()>o.iw)?((P[0]<0)?-o.iw:o.iw):P[0];//配景图今朝的X偏移,并对值举办2次批改
P[1]=P[1].toInt();P[1]=(P[1].abs()>o.ih)?((P[1]<0)?-o.ih:o.ih):P[1];

console.log(o.X+'|'+o.Y);
if(o.X>this.$L){//往右移鼠标图片往左跑
this.$L=o.X;
P[0]=(o.iw<(P[0]-10))?o.iw:(P[0]-10);
}
if(o.X<this.$L){//往左移鼠标图片往右跑
this.$L=o.X;
P[0]=((P[0]+10)>0)?0:(P[0]+10);
}
if(o.Y>this.$T){//往下移鼠标图片往上跑
this.$T=o.Y;
P[1]=(o.ih<(P[1]-10))?o.ih:(P[1]-10);
}
if(o.Y<this.$T){//往上移鼠标图片往下跑
this.$T=o.Y;
P[1]=((P[1]+10)>0)?0:(P[1]+10);
}
i.setStyle('background-position',''+P[0]+'px '+P[1]+'px');//从头给配景图的position赋值
}
});

El=$('bsfdimg');//选择dom
var MoveBKimg=new MoveBKimg();//实例化class,在实例化的进程中会自动执行initialize,并建设两个变量赋值为0,这两个变量的浸染是和鼠标今朝的坐标做比对,这样才气知道鼠标是往什么偏向移动了
El.addEvent('mousemove',function(event){//给dom节点绑定变乱
     //挪用类的Todo要领,挪用的时辰转达dom节点和options
MoveBKimg.Todo(El,{bw:260,bh:200,iw:392,ih:600,X:event.client.x,Y:event.client.y});
})

我说一下这一句:

MoveBKimg.Todo(El,{bw:260,bh:200,iw:392,ih:600,X:event.client.x,Y:event.client.y});

这里的El即为$('bsfdimg')

{bw:260,bh:200,iw:392,ih:600,X:event.client.x,Y:event.client.y}
这一句里的bw就是div容器的宽度,bh是div容器的高度,iw是图像的现实宽度,ih是图像的现实高度
图像的现实宽度和高度为了精确性以是我直接行使php取得并赋值的,虽然了,你也可以行使其他恣意你能想到的要领来取得图像宽度和高度.

X:event.client.x,Y:event.client.y
这两个体离是鼠标响应变乱的坐标,不必要修改.

event来自El.addEvent('mousemove',function(event){对变乱的绑按时的传值.

在跟从鼠标移动的配景图这篇文章内的结果是行使了function,并没有行使class封装,各人可以较量一下二者的差别.

好了,我们的一周学会Mootools1.4到此也该画一个句号了.

假如感受照旧有所不敷,保举你阅读一下下边的几篇文章信托会对你有所辅佐的

(文章来历:Seven的部落格)

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读