ActionScript,鼠标事件

时间:2016-01-15 12:42:08

标签: actionscript-3 flex mouseevent flex3 air2

我在这里有点不知所措。我有一个问题,我认为可能是由于鼠标事件优先。我在鼠标点击时调用了函数f - f执行了一些功能,然后调用另一个函数g。甚至可能f运行,然后再次点击 - 再次调用f - 然后执行然后 g

如果我的措辞很难理解,我会尝试展示我的想法:

    click1 -----       /-----------\
                \     /             \
                  f --      f--      g    g
                           /   \         /
      click2 ------------ /     \--------

 |---------------- timeline----------------------|

我可以肯定地说,只有在非常快速连续点击两次时才会出现问题(大约50次慢速和大约50次快速双击)(并非总是如此)。我意识到我的数字可能比它澄清的更令人困惑,但我不确定如何传达我的想法。非常感谢任何输入!

1 个答案:

答案 0 :(得分:2)

AS3是一个单线程代码执行环境,它将执行所有相关代码。如果单击触发了一系列方法的执行,则所有这些方法将在任何其他代码再次执行之前运行。因此,AS3代码的代码执行中不会出现竞争条件,因为它具有单线程特性。

AS3中的所有事件在这方面都不是特殊情况,当它们的侦听器触发所有代码时,它的执行方式相同,并且在完成之前不能执行其他代码。

特殊情况是:

  • 您可以使用计时器等暂停执行,以便稍后执行代码。在这种情况下,没有保证触发这些计时器将与他们的起始订单同步。

  • 执行异步命令(比如加载某些东西),在这种情况下,没有任何担保加载操作也会按顺序发生。

但是这些特殊情况并没有违反AS3中代码原则的执行,所有代码都在一个线程中执行,因此它们不能重叠。