我发现了一个关于动作脚本中的事件的有趣问题:事件是缓冲和排序的吗?
是的)在一个swfloader示例中,我设置了一个定时器(1秒)来运行一个函数,在我设置一个监听器来加载swf的事件INIT。它取决于网络条件,是否将首先执行计时器处理程序或INIT事件。想象一下INIT事件首先被触发但处理INIT事件的处理程序稍后设置的情况,是否会调用处理程序?另一个问题是,如果加载的swf非常快速地发射了几个事件,那么事件是否会按照火力序列进行排序?
答案 0 :(得分:1)
第一个问题:不,如果首先触发INIT事件并且该事件没有处理程序,则该事件将丢失。因此,最好的方法是首先设置所有侦听器然后开始任何加载操作。
第二个问题:是的,所有被触发的事件将按照它们被触发的顺序处理。
答案 1 :(得分:0)
我只是想补充一点,你可以改变可选参数中的顺序 默认情况下,首先是第一次服务,但如果你改变你的优先级可以改变
obj.addEventListener(type,listener,useCapture,priority,useWeakRefrence);
数字越高,优先级越高。所以,如果我要添加这些事件:
obj.addEventListener(type,listener1,useCapture,1,useWeakRefrence);
obj.addEventListener(type,listener2,useCapture,2,useWeakRefrence);
第二个事件将在第一个事件发生之前发生。在创建事件后,如果不删除事件并将其重新添加,则无法更改顺序。