国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

MooTools教程(14):定時器和Hash對象

2024-07-21 02:04:25
字體:
來源:轉載
供稿:網友

在今天的教程中,我們將關注兩塊內容:第一個就是.periodical();方法,然后我們再對hash做一個簡介。定時器能比它表面看起來做更多的事情——定時能定期地觸發一個函數。另一方面,hash則是鍵值對(key/value)的集合。如果你對hash還不熟悉現在也不要著急——我們今天就會做一個快速簡要的介紹,并且會提供一些延伸閱讀的相關鏈接。就像mootools中的所有東西一樣,一旦你看到它的正確用法,它使用起來就非常的簡單,并且不可思議的有用。

.periodical()函數

基本用法

使用這個方法你唯一要做的就是在一個函數的結尾添加.periodical();,那樣你的函數就會定時地觸發。和以前的一樣,有幾個東西你是需要定義的。對于初學者,你需要定義一個你需要使用定時器的函數,還有你需要它多久觸發一次(以毫秒為單位)。

參考代碼: [復制代碼] [保存代碼]
  1. var periodicalfunction = function(){
  2.     alert('again');
  3. }
  4.  
  5. window.addevent('domready'function() {
  6.     // 結尾的數字決定了這個函數觸發的時間間隔,以毫秒為單位
  7.     var periodicalfunctionvar = periodicalfunction.periodical(100);
  8. });

內置的.bind()方法

.periodical()方法包含了一個非常好的特性——它可以自動地綁定第二個參數。舉個例子,如果你想從domready的外面傳遞一個參數,你只需要把它作為第二個參數傳進去,你就可以把它綁定到你要定期觸發的函數上了。

參考代碼: [復制代碼] [保存代碼]
  1. window.addevent('domready'function() {
  2.     // 給一個變量賦值
  3.     var passedvar = $('elementid');
  4.     // 現在periodicalfunction就可以使用"this"來引用"passedvar"
  5.     var periodicalfunctionvar = periodicalfunction.periodical(100, passedvar);
  6. });

停止一個定時觸發的函數

$clear()

一旦你初始化了一個定時觸發的函數(就像我們上面所做的那樣),如果你想停止它,你可以使用$clear();方法,它使用起來非常簡單:

參考代碼: [復制代碼] [保存代碼]
  1. // 我們傳遞那個我們使用了定時器函數的定時器變量
  2. $clear(periodicalfunctionvar);

代碼示例

為把這所有的連貫起來,我們就用我們目前學過的一些東西(也有一些是沒有學過的)來創建一個定時器。首先,建立一個定時器的html頁面,我們還需要一個開始按鈕,一個停止按鈕,還有一個重置按鈕。另外,我們還要創建一個條形塊,它可以隨著時間慢慢變長。最后,我們還需要一個地方來顯示當前已經運行的時間。

參考代碼: [復制代碼] [保存代碼]
  1. <button id="timer_start">start</button>
  2. <button id="timer_stop">pause</button>
  3. <button id="timer_reset">reset</button>
  4.  
  5. <div id="timper_bar_wrap">
  6.     <div id="timer_bar"> </div>
  7. </div>
  8.  
  9.  
  10. <div id="timer_display">0</div>

現在該是mootools的代碼了:

參考代碼: [復制代碼] [保存代碼]
  1. var timerfunction = function(){
  2.     // 每次當這個函數被調用時
  3.     // 變量currenttime就會增加一
  4.     // 同時要注意一下"this.counter"的使用
  5.     // "this"是hash
  6.     // 而"counter"是key
  7.     var currenttime = this.counter++;
  8.     // 這里我們改變顯示時間的div里面的內容
  9.     $('timer_display').set('text', currenttime);
  10.     // 這里改變樣式表的width屬性,可以輕松地創建一個時間進度條
  11.     $('timer_bar').setstyle('width', currenttime);
  12. }
  13.  
  14. window.addevent('domready'function() {
  15.     // 這是一個簡單的hash對象
  16.     // 只有一個鍵值對(key/value pair)
  17.     var currentcounter = new hash({counter: 0});
  18.     // 我們初始化我們的定時器并傳入和綁定hash變量
  19.     var simpletimer = timerfunction.periodical(100, currentcounter); 
  20.  
  21.     // 由于我們不想在onload的時候就啟動定時器
  22.     // 因此我們在這里要停止這個定時器
  23.     $clear(simpletimer);
  24.  
  25.     // 在開始按鈕上添加一個事件
  26.     // 在這里再次啟動這個定時器
  27.     $('timer_start').addevent("click"function(){
  28.         simpletimer = timerfunction.periodical(100, currentcounter);
  29.     });
  30.  
  31.     // 在這里清除定時器
  32.     // 并是時間條閃亮一下
  33.     $('timer_stop').addevent("click"function(){
  34.         $clear(simpletimer);
  35.         $('timer_bar').highlight('#efe02f');
  36.     });
  37.  
  38.     $('timer_reset').addevent("click"function(){
  39.         // 重置按鈕首先清除這個定時器
  40.         $clear(simpletimer);
  41.         // 然后把counter設為0
  42.         // 這個稍后再詳細講
  43.         currentcounter .set('counter'0);
  44.         //
  45.         $('timer_display').set('text', currentcounter.counter);
  46.         $('timer_bar').setstyle('width'0);
  47.     });
  48. });

 
0

 

hash快速入門

創建一個hash

在上面的例子中,可能有一些東西是你從來沒有見過的。首先,我們使用了hash。hash是一個由鍵值對(key/value)組成的集合,它和一個包含許多對象的數組類似,不過這些對象都只有一個屬性。我們先來看一下如何建立一個hash:

參考代碼: [復制代碼] [保存代碼]
  1. var hashvar = new hash({
  2.      'firstkey'0,
  3.      'secondkey'0
  4. });

你需要把鍵(key)放在左邊,而值(value)放在右邊(除了那些對hash很熟悉的人外,我們只講一些關于hash最基本的東西,我們會在以后將類時再來講hash的存儲功能)。不管怎樣,使用和這類似的系統還是又很多好處的。首先,你可以在一個對象中存儲多個集合,存取變得容易得多,對于組織復雜的數據組織起來。

.set()方法和.get()方法

你也可以在hash中使用你熟悉的.set()和.get()方法。當你需要設置的時候,你聲明一個鍵(key),然后是你要設置的值。當你需要獲取的時候,你值需要聲明你要獲取的鍵(key)就行了。就這么簡單。

參考代碼: [復制代碼] [保存代碼]
  1. // 還是使用上面的hash
  2. // 這里我們設置firstkay的值為200
  3. hashvar.set('firstkey'200);
  4.  
  5. // 這里我們獲取firstkey的值,現在是200
  6. var hashvalue = hashvar.get('firstkey');

你可以可以通過引用hash.鍵名來獲取一個值:

參考代碼: [復制代碼] [保存代碼]
  1. var hashvalue = hashvar.firstkey;
  2. // 上面的和下面的一樣
  3. var hashvalue = hashvar.get('firstkey');

添加一個新的鍵值對到hash中

.extend();方法

你可以通過.extend();方法來添加一個或者多個新的鍵值對(key/value pair)集合到hash中。首先,我們要創建一個新的鍵值對對象。

參考代碼: [復制代碼] [保存代碼]
  1. // 這是一個普通的對象
  2. // 它包含鍵值對(key/value pairs)
  3. // 但是沒有hash的功能
  4. var genericobject = {
  5.     'third'450,
  6.     'fourth'89
  7. };

如果我們要把這個集合加入到我們已經存在的hash中,我們只需要使用.extend();方法來擴展hash就行了:

參考代碼: [復制代碼] [保存代碼]
  1. //現在hashvar包含了genericobject中的所有鍵值對
  2. hashvar.extend(genericobject);

注意:任何重復的鍵都將會被后面的設置覆蓋掉。因此,如果你在原始的hash中有"firstkey":"lettera"這樣一對,然后你又擴展了一對"firstkey":"letterb",這樣你在hash中的讀取結果將是"firstkey":"letterb"。

合并兩個hash

.combine();方法

這個方法可以讓你合并兩個hash對象,如果有重復的鍵將保留原始的值。其余的則和.extend()方法一樣。

從hash中刪除一個鍵值對

.erase();方法

我們已經見過這個方法一次了。它的工作就和你期望的那樣。你聲明一個hash,然后在后面副加上.erase();,最后你再把“鍵”(key)放在括號里面。

參考代碼: [復制代碼] [保存代碼]
  1. hashvar.erase('firstkey');

hash和.each()方法

hash和.each()方法又一種特別的關系,當你遍歷一個hash的時候,遍歷的函數將把“值”(value)作為第一個參數傳遞,而把“鍵”(key)作為第二個參數傳遞——這和你在數組上使用.each的時候一樣,它把每個“項”(item)作為第一個參數。

參考代碼: [復制代碼] [保存代碼]
  1. hashvar.each(function(value, key) {
  2.     // 這將為hash中的每一個鍵值對彈出一個對話框
  3.     alert(key + ":" + value);
  4. });

更多學習

我們目前為止要講的關于hash的內容就這么多了。由于這個系列教程中我們會更深入的學習,在以后我們將找一些機會來講有關hash的更多功能。但是現在,如果你是初學者,我們只是希望你能對hash有一個基本的概念。很快我們就要講解類(class)了,那個時候所有的東西才會串連起來。同時,閱讀一下文檔中有關hash的這一節

下載一個包含你開始所需要的所有東西的zip包

包括mootools 1.2的核心庫,上面的示例,一個外部的javascript文件,一個簡單的html頁面和一個css文件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰原市| 洪湖市| 蒙阴县| 广宁县| 广南县| 天长市| 云林县| 泰和县| 那曲县| 岳西县| 荣成市| 曲阜市| 清远市| 内江市| 彰武县| 天津市| 蕉岭县| 罗城| 赤水市| 栾川县| 霸州市| 洞口县| 涿州市| 呼伦贝尔市| 杭锦旗| 鱼台县| 偃师市| 富锦市| 五大连池市| 田林县| 隆回县| 都昌县| 二连浩特市| 分宜县| 叶城县| 耒阳市| 子长县| 无极县| 准格尔旗| 西峡县| 全州县|