| 1. 前言和準備工作 這里不會(huì )介紹什么軟件的用法一類(lèi)的東西。如果覺(jué)得手寫(xiě)代碼是在裝的人可以出去了,謝謝。 首先你要有臺電腦。然后它應該裝著(zhù)windows 和 IE。下面所談到的代碼都僅在IE6.0下調試通過(guò),但是我會(huì )盡量用標準的寫(xiě)法。這里先不仔細介紹兼容性問(wèn)題了,那是另一個(gè)教程的事情。我習慣用記事本或者UltraEdit來(lái)編輯,實(shí)際上任何文本編輯器都可以,只要你喜歡。具體怎么用這些工具就不說(shuō)了,俺們加快速度。 2. 第一個(gè)例子 做什么好呢?俺們從最簡(jiǎn)單的開(kāi)始吧....給自己一個(gè)作個(gè)特效玩玩?...讓俺想想....做一個(gè)可以扔的方塊怎么樣?開(kāi)始做了... 2.1 方塊 運行代碼框 不要說(shuō)俺在敷衍啊,萬(wàn)事都有個(gè)非常簡(jiǎn)單的開(kāi)始,就像俺被俺前mm踹掉一樣... 2.2 可以拖動(dòng)的方塊 2.21 綁定鼠標事件:按下,拖動(dòng),釋放;獲取事件信息:位置,發(fā)生的元素 運行代碼框 2.210 變量的命名 2.211 綁定事件 - 回字的四種寫(xiě)法 2.212 不要被那個(gè) I_do_not_care=... 什么的迷惑,那個(gè)是三元表達式,如果你有認真學(xué)習 JS語(yǔ)法的話(huà)。那樣寫(xiě)的目的是兼容。 2.213 在函數體的最前面就聲明需要用到的變量是個(gè)好習慣,它可以避免你犯很多莫名其妙的錯誤 - 比如遞歸的死循環(huán)之類(lèi)的。當然,如果你壓根不喜歡這個(gè)變量(就像俺那個(gè) I_do_not_care 一樣),那么就隨它去吧。 2.214 e=window.event?window.event:e; 也是為了兼容。其實(shí)這句只是獲得 event 對象而已。用 e.clientX 而不用 e.x 也是兼容問(wèn)題。obj.firstChild.nodeValue 而不是 obj.innerText 同理。<div>I am a div.</div>而不是 <div></div>也是同理。 - 兼容真是個(gè)tnnd 問(wèn)題。 2.215 如果你發(fā)現自己還是有些糊涂,回去復習 0.1 和 0.2 節中提到的事件部分 2.22 拖動(dòng)方塊 運行代碼框 2.221 編程是件腦力活動(dòng),呵呵。首先要先琢磨出來(lái),拖動(dòng)意味著(zhù)什么。其實(shí)拖動(dòng)就是判斷鼠標位置,然后改變你需要拖動(dòng)的元素的坐標而已。那么分成兩步:判斷鼠標位置,改變元素的坐標。這個(gè)看起來(lái)也不難。前一點(diǎn) 2.21 剛討論過(guò)。后一點(diǎn),如果你對 JS 操作 CSS 有所了解的話(huà)也是輕而易舉(不明白的回頭去看0.3節)。 2.222 現在俺詳細描述下這個(gè)過(guò)程: 2.223 為啥用 document 的事件綁定而不是把事件綁定在 div上面?問(wèn)的好(你不會(huì )沒(méi)想到這個(gè)問(wèn)題吧?...)如果你試著(zhù)將事件綁定在div上,你會(huì )發(fā)現隨著(zhù)鼠標的快速移動(dòng),很容易把div給甩掉(不理解的同學(xué)請自己去動(dòng)動(dòng)手)。具體的為什么不多說(shuō)了,點(diǎn)到即止,希望菜鳥(niǎo)多多思考。 2.224 不定義 position="absolute" 的話(huà),left 和 top 是無(wú)效的 - 方塊不會(huì )動(dòng)的說(shuō) 2.3 可以移動(dòng)的方塊 2.31 物理模型和面向對象 運行代碼框 2.311 2.312 注意 obj.move 那個(gè)方法(函數)的寫(xiě)法 2.32 讓方塊動(dòng)起來(lái) 運行代碼框 代碼開(kāi)始變難了啊,呵呵。請仔細閱讀注釋。 2.321 說(shuō)到底只不過(guò)是個(gè)物理過(guò)程的算法表達而已。其中移動(dòng)的實(shí)現和前面 2.22 節的拖動(dòng)是類(lèi)似的。 2.322 注意感覺(jué)這里代碼中 this 的使用。我在 Obj.move 中使用 this 的時(shí)候,this指的就是 Obj 2.323 注意我把 Obj 放在了函數外面。這時(shí)候它就是一個(gè)全局變量。這是為了后面使用 setInterval 而準備的。很多菜鳥(niǎo)在用定時(shí)器的時(shí)候常常發(fā)現“找不到對象”的錯誤,請注意一下變量的定義域問(wèn)題。 2.324 菜鳥(niǎo)注意學(xué)習內置對象 Math 的方法 2.33 讓方塊停下來(lái) 運行代碼框 在方塊上按下鼠標,它會(huì )停下來(lái),彈起鼠標,它就繼續跑了,呵呵。 2.331 沒(méi)人注意到 2.211 綁定事件 - 回字的四種寫(xiě)法只舉出了三種綁定事件的方法嗎?呵呵,這里是第四種: 2.332 我把 setInterval 改成了 setTimeout, 并且將定時(shí)器的句柄保存在了 obj 的屬性里。這種使用定時(shí)器的做法是值得菜鳥(niǎo)借鑒的。 2.4 大結局 - 可以?huà)伋龅姆綁K 運行代碼框 用鼠標按住方塊,然后移動(dòng)鼠標,同時(shí)松開(kāi)鼠標,看看效果吧,呵呵 這個(gè)例子算結束了,哈哈。不作講解了,各位自己看吧。(轉自:藍色理想) |
聯(lián)系客服