Mootools 1.2教程(14)——定时器和哈希简介
作者:Fdream 来源:Fdream博客 发布时间:2008-12-08 12:50:00
原文地址:30 Days of Mootools 1.2 Tutorials - Day 14 - Periodical and Intro to Hashes
MooTools 1.2中的定时器和Hash对象
阅读上一讲:Mootools 1.2教程(13)——正则表达式
在今天的教程中,我们将关注两块内容:第一个就是.periodical();方法,然后我们再对hash做一个简介。定时器能比它表面看起来做更多的事情——定时能定期地触发一个函数。另一方面,hash则是键值对(key/value)的集合。如果你对hash还不熟悉现在也不要着急——我们今天就会做一个快速简要的介绍,并且会提供一些延伸阅读的相关链接。就像MooTools中的所有东西一样,一旦你看到它的正确用法,它使用起来就非常的简单,并且不可思议的有用。
.periodical()函数
基本用法
使用这个方法你唯一要做的就是在一个函数的结尾添加.periodical();,那样你的函数就会定时地触发。和以前的一样,有几个东西你是需要定义的。对于初学者,你需要定义一个你需要使用定时器的函数,还有你需要它多久触发一次(以毫秒为单位)。
参考代码:
var periodicalFunction = function(){
alert('again');
}
window.addEvent('domready', function() {
// 结尾的数字决定了这个函数触发的时间间隔,以毫秒为单位
var periodicalFunctionVar = periodicalFunction.periodical(100);
});
内置的.bind()方法
.periodical()方法包含了一个非常好的特性——它可以自动地绑定第二个参数。举个例子,如果你想从domready的外面传递一个参数,你只需要把它作为第二个参数传进去,你就可以把它绑定到你要定期触发的函数上了。
参考代码:
window.addEvent('domready', function() {
// 给一个变量赋值
var passedVar = $('elementID');
// 现在periodicalFunction就可以使用"this"来引用"passedVar"
var periodicalFunctionVar = periodicalFunction.periodical(100, passedVar);
});
停止一个定时触发的函数
$clear()
一旦你初始化了一个定时触发的函数(就像我们上面所做的那样),如果你想停止它,你可以使用$clear();方法,它使用起来非常简单:
参考代码:
// 我们传递那个我们使用了定时器函数的定时器变量
$clear(periodicalFunctionVar);
代码示例
为把这所有的连贯起来,我们就用我们目前学过的一些东西(也有一些是没有学过的)来创建一个定时器。首先,建立一个定时器的HTML页面,我们还需要一个开始按钮,一个停止按钮,还有一个重置按钮。另外,我们还要创建一个条形块,它可以随着时间慢慢变长。最后,我们还需要一个地方来显示当前已经运行的时间。
参考代码:
<button id="timer_start">start</button>
<button id="timer_stop">pause</button>
<button id="timer_reset">reset</button>
<div id="timper_bar_wrap">
<div id="timer_bar"> </div>
</div>
<div id="timer_display">0</div>
现在该是MooTools的代码了:
参考代码:
var timerFunction = function(){
// 每次当这个函数被调用时
// 变量currentTime就会增加一
// 同时要注意一下"this.counter"的使用
// "this"是hash
// 而"counter"是key
var currentTime = this.counter++;
// 这里我们改变显示时间的div里面的内容
$('timer_display').set('text', currentTime);
// 这里改变样式表的width属性,可以轻松地创建一个时间进度条
$('timer_bar').setStyle('width', currentTime);
}
window.addEvent('domready', function() {
// 这是一个简单的hash对象
// 只有一个键值对(key/value pair)
var currentCounter = new Hash({counter: 0});
// 我们初始化我们的定时器并传入和绑定hash变量
var simpleTimer = timerFunction.periodical(100, currentCounter);
// 由于我们不想在onload的时候就启动定时器
// 因此我们在这里要停止这个定时器
$clear(simpleTimer);
// 在开始按钮上添加一个事件
// 在这里再次启动这个定时器
$('timer_start').addEvent("click", function(){
simpleTimer = timerFunction.periodical(100, currentCounter);
});
// 在这里清除定时器
// 并是时间条闪亮一下
$('timer_stop').addEvent("click", function(){
$clear(simpleTimer);
$('timer_bar').highlight('#EFE02F');
});
$('timer_reset').addEvent("click", function(){
// 重置按钮首先清除这个定时器
$clear(simpleTimer);
// 然后把counter设为0
// 这个稍后再详细讲
currentCounter .set('counter', 0);
//
$('timer_display').set('text', currentCounter.counter);
$('timer_bar').setStyle('width', 0);
});
});


猜你喜欢
- 本章给大家在项目使用时候,常见的一种情况解决案例,即是当我们调用多个线程,使用了同一个函数去处理数据的时候,有些用函数已经处理完成,但是有些
- 本文分析了python3新特性函数注释Function Annotations用法。分享给大家供大家参考,具体如下:Python 3.X新增
- 一:简介由paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。由于使用的是py
- 本文实例讲述了GO语言实现简单TCP服务的方法。分享给大家供大家参考。具体实现方法如下:package mainimport ("
- 一直以来,JS前端代码因为必须经过IE明文解析,某些加密的JS如:JScript.Encode也因为树大招风,早就被人破解了。还有些加密的手
- 代码:import sysfrom PyQt5.QtWidgets import (QWidget, QHBoxLayout, QLabel
- [mail function] ; For Win32 only. SMTP = mail3.focuschina.com smtp_por
- 尽管asyncio库是使用单线程来实现协程的,但是它还是并发的,乱序执行的。可以说是单线程的调度系统,并且由于执行时有延时或者I/O中断等因
- 本文实例介绍了实现js选项卡切换效果的详细代码,分享给大家供大家参考,具体内容如下思路: 1、获取元素;
- 创建列表list( ) # 创造列表list(可迭代对象)# 将可迭代对象创造成列表切片索引:列表[a:b]切片索引赋值:列表[切片] =
- 看到好几位博主通过对模块的各个击破学习python,我也效法一下,本篇说一下python中加密涉及到的模块。hashlibhashlib模块
- click() 对象.click() 使对象被点击。 closed 对象.closed 对象窗口是否已关闭true/false clearT
- 当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序。要实现这个过
- python程序运行中,可由程序抛出异常。异常触发:使用raise命令抛出异常,即可使用异常基类Exception,也可使用自定义异常类(继
- 条件:2台服务器:A和B,需要A服务器上的表迁移到B服务器。Innodb表:sysUser,记录数:351781。以下测试在MySQL 5.
- 本文实例讲述了Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法。分享给大家供大家参考,具体如下:统计两个红球和蓝球,哪个组合最
- 可控制的滚动新闻不同于自动的滚动条,它是通过按钮控制移动的,当你把鼠标放在按钮上时,新闻内容就会向上或
- 前言安全性是所有数据库管理系统的一个重要特征。理解安全性问题是理解数据库管理系统安全性机制的前提。最近和同事在做数据库权限清理的事情,主要是
- SQL Server数据库操作中,在2005以上的版本新增加了一个APPLY表运算符的功能。新增的APPLY表运算符把右表表达式应用到左表表
- 题目:解法一:比较元素是否相等思路说明:这种应该是普通人最先想到的解法,先获取到数组之后进行有小到大排序,然后初始化一个min=0(代表新数