最近,我承担了一项相当艰巨的任务,即为流行节目 Ghost Whisperer 制作交互式音乐视频。我是在项目后期加入的,遇到了一个巨大的创作文件(大约 5000 多帧长)。之前的程序员(在 AS2 中做了所有事情)基本上在时间主时间线上嵌入了一个两分半钟的 FLV,并且在某些帧点将添加剪辑以与基本的鼠标单击功能进行交互,从而触发这些剪辑播放其他剪辑带有一些flash元素和一些视频元素。
(我创建的最终版本可以在这里查看http://www.gwghostmagic.com);
作为一个整洁的怪胎,我决定在 AS3 中重建整个东西,完全放弃时间线,而是在运行时加载我的元素,这样我就有一帧而不是 5000 帧,并添加了一个 Event.ENTER_FRAME 事件侦听器来触发动作当加载的 .swf 到达某些帧时触发交互性。从程序员的角度来看,它使操作某些操作变得更加清晰和容易。问题是,事情像垃圾一样运行。
5000+ 帧版本比我的 AS3 版本加载更快,运行更流畅。这让我想到了一个问题,什么时候嵌入和运行时间线比运行事件侦听器更好?闪存是否更适合时间线功能?
最初,我决定构建并运行流式 .flv,但将动作同步到 .flv 是不可能的,因为 .flv 以 23.975 fps 运行,而我的 flash 电影以 24 fps 运行。唉,我被迫编译一个嵌入了 flv 的 .swf。然后将该 .swf 加载到我的主 .swf 中,其中包含将根据加载的 .swf 帧位置播放的所有功能和额外剪辑。
我注意到的一件事是 Event.ENTER_FRAME 似乎会减慢整个该死的应用程序的速度,因为在每一帧它都必须运行 200 行代码长的 if 语句列表。其中,如果整个内容被嵌入,我可能只需要插入一个关键帧,其中将实例化交互式剪辑,然后立即知道要做什么,而不是循环遍历 if else 语句。
我是不是把事情弄得又好又整洁而搞砸了?让flash成为flash更好吗?我应该寻找另一个职业吗?非常感谢任何输入。