Flash的“在第一帧导出”巨傻无比!在第一帧导出,无疑是要在Loading前就要把你用来attach的MC、声音、V2组件……都下载了才显示Loading条!So往往Loading都不会是从10%以内开始的!! 如果直接去掉咧?既然是用来attach的,去掉后Flash就根本不导出到SWF了,所以肯定就attach不到了!
OK解决方法:
情况1:V2组件
这个最简单,库,组件属性,去掉那个傻X到死在第一帧导出,然后点 发布设置 ,AS版本 后面的设置,导出用于类的帧 那里写第几帧导出就OK了。看来MM还没傻到掉渣~
情况2:声音
这个最严重~因为直接在UI里以帧的方式绑定声音太不好用,所以Sound对象已经是本猫的标准配置(?)了。And最要命的就是,Loop还好,几百K;往往其他音频文件都是几M的,严重影响Loading!还好今天发现了很简单的解决方法(高呼万岁三声):
库,需要attachSound的声音元件的属性,去掉那个傻X到死在第一帧导出。然后,把该元件 以·音·频·事·件·的方式绑定到Loading后、attachSound()该声音前的某帧。然后在这帧或者下一帧上写:
stopAllSounds();
简单吧,没吐血吧。呵呵~
OK,问题来了,首先这个stopAllSounds();是会把所有的声音都停掉哦,只能说祈祷你刚loading完时,是没有其他声音的(当然1秒不到的音效不容易影响到);其次,我总感觉,如果声音元件开头不是静音,会不会在绑定到时间轴时,“卡”的一下咧?虽然我自己试了,不会,不过总是小心为好吧。建议少attachSound吧,能用时间轴绑的就绑吧~(绑好吊起来打??)
情况3:MC
这个就好办了,解决方法同上,在Loading后、attachMovie()该MC前的某帧,直接把相应MC放进场景并隐藏即可。如何隐藏就不用说了吧~ mc._alpha=0;也好,放在舞台外也好,甚至改变此MC实例的深度,然后用removeMovieClip()删除!
是的,你没看错~MM在Flash帮助文档说,removeMovieClip()不能删除你在Flash工作区域内放进去的MC,其实是骗人的啦。你只要把该MC的depth改成非负数就可以了,或者把attachMovie()、或duplicateMovieClip()、甚至 createEmptyMovieClip() 的MC的Depth改成负数,照样不能removeMovieClip()!