我有一个Flash 10程序,当在具有弱处理器的设备(例如上网本)上运行时会锁定。具体来说,它进入一种状态,在鼠标按下事件之后它在ENTER_FRAME事件处理程序中进行非常繁重的处理,并期望在鼠标按下事件后停止执行此处理。问题在于,由于在帧事件处理程序之后没有剩余空闲时间,因此永远不会接收鼠标向上事件,因此进程锁定的数量等于无限循环。是的,我可以做一些事情,比如降低帧速率,尽我所能减少每帧中的处理,但有没有一些铁的方法来打破这个?有没有办法检测到没有空闲时间?或者有没有办法强制收到交互式鼠标事件?或者我可以在ENTER_FRAME代码中检测鼠标的状态,向上或向下,而不会发生鼠标事件?
答案 0 :(得分:1)
不幸的是,Flash中没有线程也没有“真正的”多任务处理。
但尝试Alex Harui's PseudoThread实施。它可以帮助您将占用大量CPU的操作划分为较小的部分,这些部分在“帧之间”帧更新中执行。
答案 1 :(得分:0)
如果Flash正在删除鼠标事件,则没有任何变量可供您自己跟踪。您将观察鼠标数据的变量取决于相同的事件。
您应该更新算法以将其处理分解为更小,可重复的块。 MOUSE_DOWN应设置一个标志,使该算法处理每个ENTER_FRAME的几个块,直到MOUSE_UP清除该标志。理想情况下,您的算法会跟踪每秒的帧数,并调整每帧的工作量,以使FPS保持在合理的值。