作者:Jesse Stratford
通过这片文章我们一起来探讨一下事件的延迟执行,如何的在Flash5中去等待几秒在执行脚本。在Flash mx中又有了建立时间间隔的特点
你所想象的时间间隔是:两个物体之间的一段空白。时间间隔就是 在一个操作和下一个操作之间的以毫秒为单位的一段时间。
在Mx中 Interval不止用来每隔X秒来执行脚本,还可以用来在合理的范围内等待X秒去执行脚本。
为何使用Interval:
Interval的作用是非常明显的,自从MX版本发布以来,他的预载图片的功能被使用的最多的。我们也经常的在影片总重复一段脚本,考虑到如
何从数据库中读取数据,但是如果只有刷新才能得到当前的最新信息,那他是没有用处的。所以他必须能够自动的刷新。当我们辛苦的写出一些代码
来循环一个MC的时候,可能不允许我们改变更新的频率。即使是每秒36.6kbps 也不能提高每秒更新的次数,但是如果我们有太多的存储
需要更新的话,(Interval能很好的完成这些)。作为一个好的程序设计者来说:我们需要顾及时间间隔的弹性。
语法结构:
时间间隔用 setInterval命令来开始,用clearInterval来停止. SetInterval 运行在两个会话之一,首先我们发送一个函数名 一段时间间隔
和一段到这个函数的会话.他将会在规定的时间内,用这个会话来呼叫那个函数.直道你调用ClearInterval来结束这些代码.
--------------------------------------------------------
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
stockInterval = setInterval(updateStockPrices, 1000, "Stratford Flash Products");
--------------------------------------------------------
如果你要传递更多的会话给函数,只要追加他们在"Stratford Flash Products"后面,用逗号隔开就可以了.但是如果你对一个目标调用一个
方法的话.他是不会运行的.目标将会参考flash用setInterval提供的首次会话,方法的名字被呼叫,然后是时间间隔 然后是会话.方法都会被
获取.下次将会按照你设定的时间间隔调用目标的方法.代码:
------------------------------------------------------
function Stock(name) {
this.name = name;
}
StratFlash = new Stock("Stratford Flash Products");
Stock.prototype.updateStockPrices = function() {
// Update code here
trace('Updating prices for '+this.name);
};
stockInterval = setInterval(StratFlash, "updateStockPrices", 1000);
------------------------------------------------------
如果你不是很熟悉对象的地位,那就不要强迫自己使用这些代码.真正重要的是最后一行:那个对象的名字是被当作一个参数传递的虽然方法的名字是一个字符串.通过原型获取的目标参数
没有被传递的.如果我想附加一些会话的话,只要把参数根在1000的后面,用逗号隔开就可以了.通过以上的论述我们可以这样:
stockInterval = setInterval(...);
Interval运行的时候没必要用一个名字.但是如果你想用clearInterval清除的话就必须有个名字了.通常 即使你加了名字也是不会损坏代码的,所以作为一个好的习惯 还是加上的好.
清除事件间隔的语法规则如下:
clearInterval(stockInterval);
清除以后 我们可能需要建立一个时间间隔来监视ms共享.可是为什么我们能使用那个较早的时间间隔而又去建立一个呢?我们可以调整我们的代码而让他更具有扩展性.
我将会用一个函数呼叫的例子来向你(必须了解OOP)说明其必要性.
---------------------------------------------------------------
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
stockToCheck = "Stratford Flash Products";
stockInterval = setInterval(updateStockPrices, 1000, stockToCheck);
----------------------------------------------------------
我们可以改变消息里面的值,还可以检查消息里面的变量的变化情况.
通过以上的例子我们利用相同的原理可以解决带宽的问题.你可以选在多长时间更新一次,还可以指定每分钟多少次.利用一个简单的数学公式 我们就可以改变会话.
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
updatesPerMinute = 6;
stockToCheck = "Stratford Flash Products";
stockInterval = setInterval(updateStockPrices, (60/updatesPerMinute) * 1000, stockToCheck);
-------------------------
我们要是在X秒钟以后去执行某个操作,以后就不再执行了,在flash5种我们必须使用一些效率很低并且让人很难理解的方法.但是在MX中我只要这样就可以了:
function mytrace(str) {
trace(str);
clearInterval(doOnce);
}
doOnce = setInterval(mytrace, 1000, "This is a test!");
---------------------------
setInterval善于迅速的响应系统.但是他不应该用作检查一个游戏的界面或者其他类似的东西.在版本6中将会提供更好的方法去做那些事情.
有一点应该注意的是:当指定的间隔时间是千分之一秒的时候:你可能不能正确地执行一个setInterval循环.例如:
function mytrace(str) {
trace(getTimer());
}
tooShortInt = setInterval(mytrace, 10);
首先要注意的是代码是瞬间改变状态的,但很明显不是千分之十秒来执行的.
通过这片文章我们一起来探讨一下事件的延迟执行,如何的在Flash5中去等待几秒在执行脚本。在Flash mx中又有了建立时间间隔的特点
你所想象的时间间隔是:两个物体之间的一段空白。时间间隔就是 在一个操作和下一个操作之间的以毫秒为单位的一段时间。
在Mx中 Interval不止用来每隔X秒来执行脚本,还可以用来在合理的范围内等待X秒去执行脚本。
为何使用Interval:
Interval的作用是非常明显的,自从MX版本发布以来,他的预载图片的功能被使用的最多的。我们也经常的在影片总重复一段脚本,考虑到如
何从数据库中读取数据,但是如果只有刷新才能得到当前的最新信息,那他是没有用处的。所以他必须能够自动的刷新。当我们辛苦的写出一些代码
来循环一个MC的时候,可能不允许我们改变更新的频率。即使是每秒36.6kbps 也不能提高每秒更新的次数,但是如果我们有太多的存储
需要更新的话,(Interval能很好的完成这些)。作为一个好的程序设计者来说:我们需要顾及时间间隔的弹性。
语法结构:
时间间隔用 setInterval命令来开始,用clearInterval来停止. SetInterval 运行在两个会话之一,首先我们发送一个函数名 一段时间间隔
和一段到这个函数的会话.他将会在规定的时间内,用这个会话来呼叫那个函数.直道你调用ClearInterval来结束这些代码.
--------------------------------------------------------
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
stockInterval = setInterval(updateStockPrices, 1000, "Stratford Flash Products");
--------------------------------------------------------
如果你要传递更多的会话给函数,只要追加他们在"Stratford Flash Products"后面,用逗号隔开就可以了.但是如果你对一个目标调用一个
方法的话.他是不会运行的.目标将会参考flash用setInterval提供的首次会话,方法的名字被呼叫,然后是时间间隔 然后是会话.方法都会被
获取.下次将会按照你设定的时间间隔调用目标的方法.代码:
------------------------------------------------------
function Stock(name) {
this.name = name;
}
StratFlash = new Stock("Stratford Flash Products");
Stock.prototype.updateStockPrices = function() {
// Update code here
trace('Updating prices for '+this.name);
};
stockInterval = setInterval(StratFlash, "updateStockPrices", 1000);
------------------------------------------------------
如果你不是很熟悉对象的地位,那就不要强迫自己使用这些代码.真正重要的是最后一行:那个对象的名字是被当作一个参数传递的虽然方法的名字是一个字符串.通过原型获取的目标参数
没有被传递的.如果我想附加一些会话的话,只要把参数根在1000的后面,用逗号隔开就可以了.通过以上的论述我们可以这样:
stockInterval = setInterval(...);
Interval运行的时候没必要用一个名字.但是如果你想用clearInterval清除的话就必须有个名字了.通常 即使你加了名字也是不会损坏代码的,所以作为一个好的习惯 还是加上的好.
清除事件间隔的语法规则如下:
clearInterval(stockInterval);
清除以后 我们可能需要建立一个时间间隔来监视ms共享.可是为什么我们能使用那个较早的时间间隔而又去建立一个呢?我们可以调整我们的代码而让他更具有扩展性.
我将会用一个函数呼叫的例子来向你(必须了解OOP)说明其必要性.
---------------------------------------------------------------
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
stockToCheck = "Stratford Flash Products";
stockInterval = setInterval(updateStockPrices, 1000, stockToCheck);
----------------------------------------------------------
我们可以改变消息里面的值,还可以检查消息里面的变量的变化情况.
通过以上的例子我们利用相同的原理可以解决带宽的问题.你可以选在多长时间更新一次,还可以指定每分钟多少次.利用一个简单的数学公式 我们就可以改变会话.
function updateStockPrices(whichStock) {
// Update code here
trace('Updating prices for '+whichStock);
}
updatesPerMinute = 6;
stockToCheck = "Stratford Flash Products";
stockInterval = setInterval(updateStockPrices, (60/updatesPerMinute) * 1000, stockToCheck);
-------------------------
我们要是在X秒钟以后去执行某个操作,以后就不再执行了,在flash5种我们必须使用一些效率很低并且让人很难理解的方法.但是在MX中我只要这样就可以了:
function mytrace(str) {
trace(str);
clearInterval(doOnce);
}
doOnce = setInterval(mytrace, 1000, "This is a test!");
---------------------------
setInterval善于迅速的响应系统.但是他不应该用作检查一个游戏的界面或者其他类似的东西.在版本6中将会提供更好的方法去做那些事情.
有一点应该注意的是:当指定的间隔时间是千分之一秒的时候:你可能不能正确地执行一个setInterval循环.例如:
function mytrace(str) {
trace(getTimer());
}
tooShortInt = setInterval(mytrace, 10);
首先要注意的是代码是瞬间改变状态的,但很明显不是千分之十秒来执行的.
回复Comments
作者:
{commentrecontent}