AS2中神奇的setInterval
作者:admin 日期:2009-05-01
AS2中的setInterval计时执行方法经过多次使用发现问题却真多.并且在帮助上也没有注明。全靠实践中才发现
相信很多人开发中也遇到同样setInterval不好使的情况吧。
经常出现的肯定就以下2种情况
1 明明已经clearInterval的怎么却还执行
2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。
经过多次实践终于解决了以上2问题。方法如下:
1 明明已经clearInterval的怎么却还执行
出现原因:因为在未执行clearInterval时如果又再执行一次 index=setInterval()那此时index不会被复盖,而是却生出另一个对应index的序号。这时候用trace(index)就发现了, 每执行一次index=setInterval() index就会递增1.
解决方法:先初始一个index=-1 在每执行index=setInterval()前先执行一次clearInterval.如果中间需要中断时在调用的函数中根据情况执行clearInterval即可
如下:
var index=-1
clearInterval(index);
index=setInterval(xxx,1000)
2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。
出现原因:在调用的函数中用trace(this) 就发现trace出来的结果是 主场景... 原来是把该脚本赋在了_root上面了。并且都已经unloadClip了该方法还存在...(真奇怪...)
解决方法:
调用时用index=setInterval(赋于该方法的MC,"移动", 100); 而不是用 index=setInterval(移动, 100);
可能大家看到此时很奇怪。平时用时2种方法都生效啊。
setInterval 为什么要在第1参数写 赋于路径...第2参数才写方法名.
经测试才知道setInterval它的执行原理是把 调用的方法脚本复制到某个地方。然后开始执行。
在用index=setInterval(赋于该方法的MC,"移动", 100);
比如:赋于该方法的MC(第1参数) 填this 这时候AS把“移动”这个脚本复制一份至 this上面开始调用。所以在用了unloadClip后,该方法也跟着删除了。就正常了
而用了 index=setInterval(移动, 100); 这时候AS是把“移动”复制到了默认的_level0上(_root),所以unloadClip含有setInterval的MC,该方法还会执行。(原因就是脚本被复制了。经过测试,我是这样理解的)
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog www.ycflash.com/blog
//
//=====================================
相信很多人开发中也遇到同样setInterval不好使的情况吧。
经常出现的肯定就以下2种情况
1 明明已经clearInterval的怎么却还执行
2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。
经过多次实践终于解决了以上2问题。方法如下:
1 明明已经clearInterval的怎么却还执行
出现原因:因为在未执行clearInterval时如果又再执行一次 index=setInterval()那此时index不会被复盖,而是却生出另一个对应index的序号。这时候用trace(index)就发现了, 每执行一次index=setInterval() index就会递增1.
解决方法:先初始一个index=-1 在每执行index=setInterval()前先执行一次clearInterval.如果中间需要中断时在调用的函数中根据情况执行clearInterval即可
如下:
var index=-1
clearInterval(index);
index=setInterval(xxx,1000)
2 如果是在子MC中使用了 setInterval 如果unloadClip这个MC 怎么还会执行setInterval 中的事件。
出现原因:在调用的函数中用trace(this) 就发现trace出来的结果是 主场景... 原来是把该脚本赋在了_root上面了。并且都已经unloadClip了该方法还存在...(真奇怪...)
解决方法:
调用时用index=setInterval(赋于该方法的MC,"移动", 100); 而不是用 index=setInterval(移动, 100);
可能大家看到此时很奇怪。平时用时2种方法都生效啊。
setInterval 为什么要在第1参数写 赋于路径...第2参数才写方法名.
经测试才知道setInterval它的执行原理是把 调用的方法脚本复制到某个地方。然后开始执行。
在用index=setInterval(赋于该方法的MC,"移动", 100);
比如:赋于该方法的MC(第1参数) 填this 这时候AS把“移动”这个脚本复制一份至 this上面开始调用。所以在用了unloadClip后,该方法也跟着删除了。就正常了
而用了 index=setInterval(移动, 100); 这时候AS是把“移动”复制到了默认的_level0上(_root),所以unloadClip含有setInterval的MC,该方法还会执行。(原因就是脚本被复制了。经过测试,我是这样理解的)
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog www.ycflash.com/blog
//
//=====================================
评论: 0 | 引用: 0 | 查看次数: 1258
发表评论
你没有权限发表评论!
上一篇
下一篇

文章来自:
Tags: 





