Apache flex 立即显示Flex应用程序?

Apache flex 立即显示Flex应用程序?,apache-flex,preloader,Apache Flex,Preloader,我正在Flex中做一个小项目,这是一个将图像上传到服务器的应用程序。由于它是一个相当轻量级的应用程序(发行版中约为40KB),我希望它在加载html页面时立即显示。但不知怎的,在它出现之前有一个长达1-2秒的延迟。我认为这实际上是加载和应用程序显示之间的延迟,我相信它可以被删除 但是,我找不到如何缩短/消除延迟的解决方案。首先,我尝试禁用预加载程序,但没有任何效果。在预加载程序关闭和应用程序显示之间实际上有一个延迟(大约500毫秒-1秒)。我的下一个猜测是编写一个定制的预加载程序类,以显示至少一

我正在Flex中做一个小项目,这是一个将图像上传到服务器的应用程序。由于它是一个相当轻量级的应用程序(发行版中约为40KB),我希望它在加载html页面时立即显示。但不知怎的,在它出现之前有一个长达1-2秒的延迟。我认为这实际上是加载和应用程序显示之间的延迟,我相信它可以被删除

但是,我找不到如何缩短/消除延迟的解决方案。首先,我尝试禁用预加载程序,但没有任何效果。在预加载程序关闭和应用程序显示之间实际上有一个延迟(大约500毫秒-1秒)。我的下一个猜测是编写一个定制的预加载程序类,以显示至少一个应用程序的图像(即使它不可单击,但至少是一些东西)


任何建议都将不胜感激。

改用AS2,您将变得更简单、更轻巧

尝试在as2中使用当前版本的swfloader

在flex4中使用此选项,例如。 合并到代码中,如下所示

改用AS2,您将变得更简单、更轻

尝试在as2中使用当前版本的swfloader

在flex4中使用此选项,例如。 合并到代码中,如下所示

事实上,我成功地获得了想要的行为。不过你的评论很有用

这是怎么做的。我为我的应用程序实现了一个自定义预加载程序,在预加载程序的构造函数中,我加载了处于禁用状态的应用程序的一个图像(读:屏幕截图)(这样用户就不想与它交互)。我使用了此链接中的快照演示-

以下是我为预加载程序编写的代码(大部分来自下面的链接,一个剪切版本):

包装 {

}


我最终得到了一个很大的班级,但它做了它应该做的。如果您对代码有任何意见,我们将不胜感激。

事实上,我成功地获得了所需的行为。不过你的评论很有用

这是怎么做的。我为我的应用程序实现了一个自定义预加载程序,在预加载程序的构造函数中,我加载了处于禁用状态的应用程序的一个图像(读:屏幕截图)(这样用户就不想与它交互)。我使用了此链接中的快照演示-

以下是我为预加载程序编写的代码(大部分来自下面的链接,一个剪切版本):

包装 {

}


我最终得到了一个很大的班级,但它做了它应该做的。如果您对代码有任何意见,我们将不胜感激。

Flex框架需要时间来完成应用程序设置。我认为你对此无能为力。虽然,正式的代码审查可能会突出显示代码中可能有助于缩短加载时间的项目。回应Jeff的评论,如果您的应用程序只有40k,则很可能您使用的是RSL,这意味着必须下载它们,然后将其添加到应用程序中。类加载整个框架RSL本身需要时间。请尝试在项目的编译器设置中使用FlexSDK的“合并为代码”选项。问题是您的小SWF正在加载大量的RSL。Flex框架需要时间来完成应用程序设置。我认为你对此无能为力。虽然,正式的代码审查可能会突出显示代码中可能有助于缩短加载时间的项目。回应Jeff的评论,如果您的应用程序只有40k,则很可能您使用的是RSL,这意味着必须下载它们,然后将其添加到应用程序中。类加载整个框架RSL本身需要时间。请尝试在项目的编译器设置中使用FlexSDK的“合并为代码”选项。问题是,您的小型SWF正在装载成吨的RSL。
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import mx.events.FlexEvent;
import mx.events.RSLEvent;
import mx.preloaders.IPreloaderDisplay;

public class SSPreloader extends Sprite implements IPreloaderDisplay
{        
    [ Embed(source="startup.png", mimeType="application/octet-stream") ]
    public var WelcomeScreenGraphic:Class;

    private var loader:Loader;
    public function SSPreloader() 
    {
        super();

        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderBytesLoaded);
        loader.loadBytes(new WelcomeScreenGraphic() as ByteArray);
    }

    public function onLoaderBytesLoaded(event : Event) : void
    {
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaderBytesLoaded);
        if (event.target.content != null)
        {
            var image:DisplayObject = event.target.content as DisplayObject; 
            addChildAt(image,0);
        }
    }


    private var _backgroundAlpha:Number = 1;
    public function get backgroundAlpha():Number
    {
        if (!isNaN(_backgroundAlpha))
            return _backgroundAlpha;
        else
            return 1;
    }

    public function set backgroundAlpha(value:Number):void
    {
        _backgroundAlpha = value;
    }

    //----------------------------------
    //  backgroundColor
    //----------------------------------

    private var _backgroundColor:uint;
    public function get backgroundColor():uint
    {
        return _backgroundColor;
    }
    public function set backgroundColor(value:uint):void
    {
        _backgroundColor = value;
    }

    //----------------------------------
    //  backgroundImage
    //----------------------------------

    private var _backgroundImage:Object;
    public function get backgroundImage():Object
    {
        return _backgroundImage;
    }
    public function set backgroundImage(value:Object):void
    {
        _backgroundImage = value;
    }

    //----------------------------------
    //  backgroundSize
    //----------------------------------

    private var _backgroundSize:String = "";
    public function get backgroundSize():String
    {
        return _backgroundSize;
    }
    public function set backgroundSize(value:String):void
    {
        _backgroundSize = value;
    }

    //----------------------------------
    //  preloader
    //----------------------------------

    private var _preloader:Sprite;         
    public function set preloader(value:Sprite):void
    {
        _preloader = value;

        value.addEventListener(ProgressEvent.PROGRESS, progressHandler);    
        value.addEventListener(Event.COMPLETE, completeHandler);

        value.addEventListener(RSLEvent.RSL_ERROR, rslErrorHandler);

        value.addEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler);
        value.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);
    }

    //----------------------------------
    //  stageHeight
    //----------------------------------

    private var _stageHeight:Number = 375;
    public function get stageHeight():Number 
    {
        return _stageHeight;
    }
    public function set stageHeight(value:Number):void 
    {
        _stageHeight = value;
    }

    //----------------------------------
    //  stageWidth
    //----------------------------------

    private var _stageWidth:Number = 500;
    public function get stageWidth():Number 
    {
        return _stageWidth;
    }
    public function set stageWidth(value:Number):void 
    {
        _stageWidth = value;
    }

    //--------------------------------------------------------------------------
    //
    //  Methods:IPreloaderDisplay
    //
    //--------------------------------------------------------------------------

    public function initialize():void
    {
    }

    //--------------------------------------------------------------------------
    //
    //  Methods
    //
    //--------------------------------------------------------------------------

    private var lastBarWidth:Number = 0;
    protected function setDownloadProgress(completed:Number, total:Number):void
    {
    }

    protected function setInitProgress(completed:Number, total:Number):void
    {
    }

    protected function showDisplayForDownloading(elapsedTime:int,
                                                 event:ProgressEvent):Boolean
    {
        return false;
    }

    protected function showDisplayForInit(elapsedTime:int, count:int):Boolean
    {
        return false;
    }

    //--------------------------------------------------------------------------
    //
    //  Event handlers
    //
    //--------------------------------------------------------------------------

    protected function progressHandler(event:ProgressEvent):void
    {
    }

    protected function completeHandler(event:Event):void
    {
    }

    protected function rslErrorHandler(event:RSLEvent):void
    {
        _preloader.removeEventListener(ProgressEvent.PROGRESS,
            progressHandler);    

        _preloader.removeEventListener(Event.COMPLETE,
            completeHandler);

        _preloader.removeEventListener(RSLEvent.RSL_ERROR,
            rslErrorHandler);

        _preloader.removeEventListener(FlexEvent.INIT_PROGRESS,
            initProgressHandler);

        _preloader.removeEventListener(FlexEvent.INIT_COMPLETE,
            initCompleteHandler);
    }

    protected function initProgressHandler(event:Event):void
    {
    }

    protected function initCompleteHandler(event:Event):void
    {
        dispatchEvent(new Event(Event.COMPLETE)); 
    }
}