使用Flex SDK编译的Flash文件非常大

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Flex SDK编译的Flash文件非常大相关的知识,希望对你有一定的参考价值。

我有一个简单的Flash视频播放器,我正在使用Adobe Flash Builder进行编译,但现在我正在使用Flex SDK 4.6进行编译。当我使用FB编译时,Flash文件大小为20KB。现在它是280KB。我知道它添加了一些swc文件到swf构建,我已经禁用了调试等指令,这里提供http://livedocs.adobe.com/flex/3/html/help.html?content=performance_06.html。是否有可能以某种方式转换fla组件而不使用mxml?

这是我的mxml代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application backgroundColor="#000000" xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" minWidth="320" minHeight="240" creationComplete="initApp()">
    <fx:Script>
        public function initApp():void{
            var p = new video_player(uic);                      
        }       
    </fx:Script>    
    <mx:UIComponent id="uic" />      
</mx:Application>

video_player.阿斯

....Import statements
public class video_player{      
        private var uic:UIComponent
        var fullScreen:Image;
        var rtmpApplication:String;
        var streamName:String;
        public function video_player(_uic:UIComponent) {
            uic=_uic;
            if (FlexGlobals.topLevelApplication.parameters.hasOwnProperty("applicationName")) {
                rtmpApplication=FlexGlobals.topLevelApplication.parameters.applicationName;
            }
            if (FlexGlobals.topLevelApplication.parameters.hasOwnProperty("streamName")) {
                streamName=FlexGlobals.topLevelApplication.parameters.streamName;
            }       
            vPlayer=new Video(playerwidth,playerheight);
            uic.addChild(vPlayer);
            init();         
        }

        public function init(){
         //add fullscreen image in flash top right , and event handler
         //Code to connect to live application and play video using NetConnection and NetStream
        }

}

有没有办法解决?

答案

另外我添加了选项-static-link-runtime-shared-libraries = true所以它不会下载任何运行时。没有那个闪存大小是49KB

通过设置上述选项,您已告诉编译器在应用程序SWF中包含所有Flex框架类(应用程序使用的)。因此,您的SWF从49KB增长到280KB。

这是@Reboog711和我谈论的“RSL”事物(运行时共享库​​)。如果您使用Flex RSL,那么所有Flex框架代码都不会包含在您的应用程序SWF中。 Flex框架RSL由Adobe签名,可以由Flash Player缓存。所以使用它们总是更好。 (注意:我假设这一切仍适用于Apache Flex)

最后,我想重申一下,在Flash Builder中,您可以创建两种基本类型的项目:Flex项目,Actionscript项目。我忽略了移动选项,但同样适用于它们:

一般而言,Actionscript项目会导致较小的SWF,因为您不依赖于任何Flex框架类。听起来你可以让你的视频播放器应用程序更小(更接近你原来的20KB大小),如果你要创建一个Actionscript项目。

以上是关于使用Flex SDK编译的Flash文件非常大的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Flex 编译的 SWF 加载到 Flash CS4 编译的 SWF 中

FDT 找不到 Flash 播放器

如何在 Flash Builder 4.6 中更新 Flex SDK

使用 Flash CS5 创建 Flex 3.5 组件

Adobe AIR SDK 和 Flex SDK 的关系?

程序员应该如何开始使用Flash / Flex / ActionScript?