【发布时间】:2012-10-14 16:30:14
【问题描述】:
我有一个包含歌曲列表的 Flash 应用程序。它使用 Actionscript 单独绘制每一行。现在,当歌曲数量很大时,应用程序会在浏览器中速度较慢的机器上崩溃
A script is causing Adobe Flash Player to run slowly. If it continues to run, your computer may become unresponsive. Do you want to abort the script?
现在我想知道,在库中手动将每首歌曲的行创建为MovieClip,而不是绘制整行,而只使用attachMovie,是否会减少功耗/CPU/内存密集型?
我尝试在 Actionscript 中绘制一次该行,然后尝试 duplicateMovieClip 但这不会将绘图复制过来。
我使用LoadVars 检索数据,这需要一些时间,具体取决于数据量,但时间无关紧要,然后我使用Sephiroth Serializer 类对数据进行反序列化,然后开始绘制每一行.
请告诉我,感谢您的帮助。
【问题讨论】:
-
添加或复制电影剪辑不应该是原因,可能是由于您填充所有歌曲的方式......更多关于代码的信息会有所帮助。
-
@loxxy 我已经更新了代码的简短描述,如果信息足够,请告诉我。
-
您在这里使用
MovieClip有什么原因吗?虽然我怀疑它会有多大帮助,但MovieClip并不是轻量级的,因为它包含时间线功能。如果您不需要时间线,永远不要使用MovieClip。始终使用Sprite,MovieClip扩展并添加了时间线功能。 编辑:刚刚意识到这是 AS2。正如 Jason Sturges 所说,AS3 的速度明显更快。 -
ActionScript 3 runs significantly faster than legacy ActionScript code,轻松快 10 倍。在不了解您“绘制每一行”的内容的情况下,对像素数据的副本进行 blitting,确保在后台没有绘制,使用异步模式或跨帧节流,展平显示列表层次结构,以及检查迭代循环将是下一步。
-
对我来说,您使用的某种类型的循环似乎存在问题。我会想象循环是抓取内容并将其放置到您的页面上。我很想看看你如何使用
duplicateMovieClip()。
标签: flash actionscript adobe actionscript-2