多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jscript > 一周學會Mootools 1.4中文教程:(7)匯總收尾

一周學會Mootools 1.4中文教程:(7)匯總收尾

來源:程序員人生   發布時間:2014-04-23 13:51:59 閱讀次數:2885次
轉眼之間已經第七課了,這也將成為最后一課,如果這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.vxbq.cn/a/view/42563.html

所不同的是,之前我是直接使用function實現的,而現在是使用class封裝過了,下邊是實現代碼.

<script style="text/javascript" src="http://www.vxbq.cn/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.vxbq.cn/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的部落格)

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 无码免费一区二区三区免费播放 | 免费看一级毛片欧美 | 成年人在线观看免费视频 | 最近高清中文字幕大全免费1 | 亚洲国产精品免费在线观看 | 成人午夜网站 | 成人精品一区久久久久 | 日韩欧美综合在线二区三区 | 亚洲成a人v欧美综合天 | 特级a欧美做爰片毛片 | 国产福利视频一区二区三区四区 | 亚洲综合爱爱久久网 | 亚洲乱码专区一区二区三区 | 亚洲欧美极品 | 久草在线网址 | 国产成人99久久亚洲综合精品 | 五月激情五月婷婷 | 国产高清精品一级毛片 | 亚洲欧美日韩另类精品一区二区三区 | 国产成人综合亚洲欧美天堂 | 欧美肥老太 | 伊人久久大香线蕉75 | 欧美日韩看片 | 爱爱综合 | 欧美国产一区二区 | 亚洲国产精品免费在线观看 | 国产精品久久久久无码av | 欧美人与动人物xxxx9296 | 天堂成人| 美国免费毛片 | 国产老妇女 | 在线碰碰视频在线观看 | 亚洲一区色图 | 亚洲高清成人 | 色综合久久综合欧美综合图片 | 免费色网址 | 国产a级淫片 | 亚洲一级视频在线观看 | 最近中文免费字幕在线播放 | 国产日韩欧美综合一区 | 日韩久久精品一区二区三区 |