如何制作手机网站,网站建设 容易吗,为什么我的wordpress这么丑,网站建设单位是什么根据内容是否为动画#xff0c;选择计时器或 ENTER_FRAME 事件。 对于执行时间太长的非动画内容#xff0c;优先选择计时器#xff0c;而不是 Event.ENTER_FRAME 事件。 在 ActionScript 3.0 中#xff0c;有两种方法可以特定的间隔调用函数。第一种方法是使用由交互式对象…根据内容是否为动画选择计时器或 ENTER_FRAME 事件。 对于执行时间太长的非动画内容优先选择计时器而不是 Event.ENTER_FRAME 事件。 在 ActionScript 3.0 中有两种方法可以特定的间隔调用函数。第一种方法是使用由交互式对象 (InteractiveObject) 调度的Event.ENTER_FRAME 事件。第二种方法是使用计时器。ActionScript 开发人员通常使用 ENTER_FRAME 事件方法。需要对每个帧调度 ENTER_FRAME 事件。因此调用函数的间隔与当前帧速率有关。可通过 Stage.frameRate 属性来查看帧速率。然 而在某些情况下使用计时器比使用 ENTER_FRAME 事件更合适。例如如果您没有使用动画但又想以特定的间隔调用代码则使用计时器可能是更好的选择。 计时器的行为与 ENTER_FRAME 事件的行为类似但是调度事件无需考虑帧速率。通过此行为可实现一些重要优化。以视频播放器应用程序为例。在这种情况下由于仅移动应用程序控件不需要使用高帧速率。 注 帧速率不影响视频因为视频未嵌入时间轴中。视频是通过渐进式下载或流式下载动态加载的。 在此示例中帧速率设置为一个较低的值 10 fps。计时器以每秒一次的速度更新控件。TimerEvent 对象中提供的updateAfterEvent() 方法可以提供更高的更新速率。如果需要此方法会在每次计时器调度事件时强制更新屏幕。以下代码演示 了这一概念
// Use a low frame rate for the application stage.frameRate 10; // Choose one update per second var updateInterval:int 1000; var myTimer:Timer new Timer(updateInterval,0); myTimer.start(); myTimer.addEventListener( TimerEvent.TIMER, updateControls ); function updateControls( e:TimerEvent ):void { // Update controls here // Force the controls to be updated on screen e.updateAfterEvent(); } 调用 updateAfterEvent() 方法不会修改帧速率。它只强制 Flash Player 更新屏幕上已更改的内容。时间轴仍以 10 fps 的速度运行。请记住在低性能设备上或者事件处理函数包含要求进行大量处理的代码时计时器和 ENTER_FRAME 事件并不完全 精确。就像 SWF 文件帧速率一样计时器的更新帧速率随情况的不同而不同。 将应用程序中 Timer 对象和注册的 enterFrame 处理函数的数量降至最少。 对于每个帧运行时将为其显示列表中的每个显示对象调度一个 enterFrame 事件。尽管您可以使用多个显示对象为enterFrame 事件注册侦听器但这样做意味着将在每个帧上执行更多代码。或者考虑使用一个集中的 enterFrame 处理函数该函数执行要运行每个帧需要的所有代码。通过集中此类代码更容易管理所有频繁运行的代码。 同样如果使用的是 Timer 对象将产生与从多个 Timer 对象创建和调度事件相关联的开销。如果您必须在不同的时间间隔触发不同的操作以下提供了一些建议的替代方法 • 根据其发生的频率使用最少数量的 Timer 对象和组操作 例如将一个 Timer 对象用于频繁执行的操作设置为每 100 毫秒触发一次。将另一个 Timer 对象用于频率较低的操作或后台操作设置为每 2000 毫秒触发一次。 • 使用一个 Timer 对象并以 Timer 对象的 delay 属性时间间隔的倍数触发操作。 例如假设您希望某些操作每 100 毫秒发生一次而其他操作每 200 毫秒发生一次。在这种情况下请使用一个 delay 值为100 毫秒的 Timer 对象。在 timer 事件处理函数中添加一个条件语句即仅每隔一次运行一次时间间隔为 200 毫秒的操作。以下示例对此技术进行了演示 var timer:Timer new Timer(100); timer.addEventListener(TimerEvent.Timer, timerHandler); timer.start(); var offCycle:Boolean true; function timerHandler(event:TimerEvent):void { // Do things that happen every 100 ms if (!offCycle) { // Do things that happen every 200 ms } offCycle !offCycle; } 停止未使用的 Timer 对象。
如果 Timer 对象的 timer 事件处理函数仅在特定的条件下执行操作则当不符合这些条件时调用 Timer 对象的 stop() 方法。在 enterFrame 事件或 Timer 处理函数中尽量减少对可导致重绘屏幕的显示对象外观的更改。 对于每个帧呈现阶段都将重绘在该帧期间更改的舞台部分。如果重绘区域很大或者很小但包含大量或复杂的显示对象则运行时需要更多时间才能呈现。要测试需要重绘的量请使用 Flash Player 调试版或 AIR 中的“ 显示重绘区域” 功能。 有关提高重复操作的性能的详细信息请参阅以下文章 • Writing well-behaved, efficient, AIR applications Arno Gourdol 编写的文章和示例应用程序