Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex Post事件屏幕更新_Apache Flex_Flash_Actionscript 3_Performance_Profiling - Fatal编程技术网

Apache flex Flex Post事件屏幕更新

Apache flex Flex Post事件屏幕更新,apache-flex,flash,actionscript-3,performance,profiling,Apache Flex,Flash,Actionscript 3,Performance,Profiling,我今天在调查一件非常奇怪的事情时遇到了这个话题。在我们的Flex应用程序中执行某些操作可能会导致渲染到火箭的帧数从12fps到~30fps:加载的动画开始高速播放,GUI开始锁定 由于我在Flex/Flash上读到的所有内容都强调了“帧速率上限为顶级应用程序中设置的fps”,因此这些额外渲染的发生似乎是由于某些事件导致的(没有对舞台帧速率进行编程更改)。因为它只在我将更新逻辑放入ENTER_FRAME处理程序时发生,所以我试图找出可能发生的情况,这显然会导致Flex变得疯狂 假设:我的更新函数中

我今天在调查一件非常奇怪的事情时遇到了这个话题。在我们的Flex应用程序中执行某些操作可能会导致渲染到火箭的帧数从12fps到~30fps:加载的动画开始高速播放,GUI开始锁定

由于我在Flex/Flash上读到的所有内容都强调了“帧速率上限为顶级应用程序中设置的fps”,因此这些额外渲染的发生似乎是由于某些事件导致的(没有对舞台帧速率进行编程更改)。因为它只在我将更新逻辑放入ENTER_FRAME处理程序时发生,所以我试图找出可能发生的情况,这显然会导致Flex变得疯狂

假设:我的更新函数中的某些东西正在触发即时屏幕更新,这会立即引发另一个ENTER_帧,这意味着我的更新循环被调用,这会触发另一个即时屏幕更新

我们的GUI中使用了Flex组件,如果这是一个因素的话。我真的不知道下一步该怎么办

澄清

  • 当我说事情加速时,有 这有两种表现方式
  • 首先,我的输入帧处理程序 打电话的次数要多得多
  • 第二,a 带循环的加载闪存SWF 内置动画会突然加速 到目前为止,它看起来很傻
  • 我没有使用updateAfterEvent,我只是 在调查时发现这是存在的 这个问题。显然,有些 Sprite子类上的事件 自动调用这个,我想知道 如果这是根本原因的话
  • 我根本没有在渲染方面做任何直接的麻烦。背景动画自动播放,因为它们具有CS3创作内置的时间线,我们的更新功能所做的只是更改显示对象的位置或添加/删除它们等
更新: 我在我的应用程序中添加了一个标签来打印stage.frameRate,并发现在某些时候,它突然从12变为1000(最大允许值)。虽然在我的ENTER_框架处理程序中添加一行来重置它很简单,但这并不是一个很大的帮助。 而且,即使这样做,渲染也会一团糟。某些动作(如弹出警报)会让一切重新活跃起来。 不幸的是,我无法查看Stage类的源代码以在setter属性上设置断点


关于Flex加载“设置为1000fps”的事情非常有趣。我们有几个Flex应用程序,它们都提供了一个公共接口。主应用程序负责根据需要通过SWFLoader类加载这些模块。然而,加载过程已经考虑了延迟加载。。。当SWF加载时,我们等待SystemManager完成应用程序。收到后,应用程序是否应该完成?有一点我不清楚-您是否看到实际屏幕刷新的速度比发布的帧速率快?或者是动画移动更快,但屏幕刷新不变?(也就是说,它过去每秒移动10个像素,但现在无论屏幕绘制的频率有多高,它的移动速度都比这快。)

检查这一点的一个简单方法是尝试以1fps的速度发布内容。应该清楚的是,屏幕是否每秒重画一次,但动画元素移动的频率高于此,或者屏幕是否实际更新的频率更高

如果是后者,您是否在代码中使用了任何
updateAfterEvent()
方法?这可能导致实际屏幕刷新速度快于发布的帧速率。但它不应影响
ENTER\u FRAME
事件。您仍然应该每帧只获得其中一个更新

或者,您正在为精灵等设置动画,还是将它们实现为Flex组件,并尝试使用
invalidate()
方法和渲染事件等重新绘制它们


如果你能在问题中澄清其中几点,答案可能会更清楚。谢谢…

有一件事我不太清楚-您是否看到实际的屏幕刷新速度比发布的帧速率更快?或者是动画移动更快,但屏幕刷新不变?(也就是说,它过去每秒移动10个像素,但现在无论屏幕绘制的频率有多高,它的移动速度都比这快。)

检查这一点的一个简单方法是尝试以1fps的速度发布内容。应该清楚的是,屏幕是否每秒重画一次,但动画元素移动的频率高于此,或者屏幕是否实际更新的频率更高

如果是后者,您是否在代码中使用了任何
updateAfterEvent()
方法?这可能导致实际屏幕刷新速度快于发布的帧速率。但它不应影响
ENTER\u FRAME
事件。您仍然应该每帧只获得其中一个更新

或者,您正在为精灵等设置动画,还是将它们实现为Flex组件,并尝试使用
invalidate()
方法和渲染事件等重新绘制它们


如果你能在问题中澄清其中几点,答案可能会更清楚。谢谢…

谢谢您的澄清。如果加载的带有动画的剪辑(我假设你指的是帧动画)正在加速,那么听起来肯定有什么东西在改变你的播放帧速率,而不是其他可能发生的事情。话虽如此,这并不是我以前见过的问题,但我确实认为,你可以尝试一些方法来缩小问题的范围:

  • 您不妨在加速过程中尝试跟踪
    stage.frameRate
    。大概什么都不应该改变你的帧速率,但既然这样可以解释