`
柴秉承
  • 浏览: 87331 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Flex Preloader

    博客分类:
  • FLEX
阅读更多

preloader 是在SystemManger的第一帧上面,其加入的时机是在initialize()中加入的。

调用是 constructor->initHandler(这里因为需要读取主swf对象自身的属性,所以在发出Event.INIT事件之后才能进行属性读取以及相关的操作,这些操作包括侦听帧的状态以便加载一些额外的内容)->initialize(),进入到这个方法的时候,flex开始建立一个用于rsl,resource,本身的预加载器,这个加载器旨在提供友好的用户提示,表示应用完成构造需要一定的时间.

preloader 必然是位于当前的所有管理器的最顶端,因为App没有加载完毕之后应该是不可见的,尽管其确实没有完成创建也不可见。

在这里,通过读取来自根swf的一些参数信息(由外部传入,猜测应该是有编译器传入的参数)控制一些样式信息,比如backgroundColor backgroundSize backgroundImage 等,还有就是rsl以及resource的资源链接地址以及相关信息参数,需要一并传递给preloader,这里采用preloader.initialize(..params)来初始化相关的数据,默认是需要传入确实是否使用一个提示加载器的,并且需要把这个提示加载器的类名字给传递过去,这个也是由外部传入的参数,这个参数可以通过MXML里面的Application标签中的 preloader=”sss.ss.ss” 来传递一个自己定义的提示加载器,注意这个提示加载器是我取的名字,实际是一个(downloaderProgressBar,默认的位于preloaders/下面,有两个默认的可供使用)反正作用就是一个加载的提示,这个要自定义需要实现特定的接口,而且和这里的preloader不是一个概念,为什么呢?

因为preloader是必须的,它需要完成自身的一些东西的载入,它是在后台运行的一个必须的过程,而提示器则是可有可无,没有,preloader照样要加载,因为主swf本身需要用到其加载的某些过程事件,rsl以及resource可能也许要,尤其是rsl,如果使用了共享链接库,则必须要加载,而downloaderprogressBar 则不是必需品,它只是外在的UI提示界面,告诉用户,我这个程序正在加载一些我自己要的东西,如果应用比较大,那么这样做体验就好些。默认使用的是SparkDownloaderProgressBar(flex4以后的版本)这个与使用的主题有关,以前是DownloaderProgressBar。

那么preloader是如何完成的呢,它有几个阶段,初始化阶段就是初始化所有的属性,如果要启用downloaderprogressbar,则会根据displayClass 创建一个progressbar ,并且开始加载数据,同时注册一个timer,当作一个加载的监听器,不断的测试加载的进程,这将主要做如下的事情:

如果frameloaded 到2表示可以进行application的构造工作了,发出  FlexEvent.PRELOADER_DOC_FRAME_READY

如果每次加载数据已满(bytesloaded和bytestotal 实际是自身加上rsl库的大小以及resource的大小,只是并不一定确定,因为这里rslloader不但是rsl的,而且是resource的加载器,),需要检测rsl是否加载完毕,完毕了就需要检查resource是否都已经加载完毕了,如果加载完毕了则开始派发Event.COMPLETE ,此事件实际给downloaderProgressBar使用,以帮助其确定这里所有的数据都加载完毕(默认没有用到,不过预留了监听器),当然这里并不代表整个初始化就真完了,也只是数据完毕了,后面还需要看Application的创建,所以这个时候其还会派发一个FlexEvent.INIT_PROGRESS事件,提示初始化仍在进行中。

这个时候就有Flex注册Application给preloader,通过registerApplication(app:Application)方法(这个注册是在Application构造完成时注册的,而且由flex自己完成,无法自己控制),注册的过程实际就是监听Application的验证以及创建过程包括:

app.addEventListener(“validatePropertiesComplete”, appProgressHandler);
app.addEventListener(“validateSizeComplete”, appProgressHandler);
app.addEventListener(“validateDisplayListComplete”, appProgressHandler);
app.addEventListener(FlexEvent.CREATION_COMPLETE, appCreationCompleteHandler);
最后根据Application完成自身的所有创建,更新显示列表之后,派发出CREATION_COMPLETE ,这里监听之后再次派发一个INIT_COMPLETE事件,表示初始化完成,在这里还不算完,因为这里也仅仅代表Application可用,创建完成,莫要忘记了如果使用的downloaderProgressBar,这个东西有没有完成还不知道,所以这个时候需要监听其Event.COMPLETE事件(如果没有启用,将直接调用收尾函数完成一些清理工作),一旦它完成了则最后收尾,取消掉不用的监听器,并且可能的话某些不要的对象设置为null,以便于垃圾回收器工作,并且派发出
FlexEvent.PRELOADER_DONE
自此,也就完毕了,而从preloader派发的这些事件都被SystemManger来使用,这里没有提到的一些rslevent,则是在rsl加载过程中派发出来的,在SystemManager需要用到,来判断rsl的载入情况。
分享到:
评论

相关推荐

    美丽的Flex Preloader控件,页面预加载效果

    美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果

    flex初始化页面修改,preloader

    在Flex应用程序开发中,用户首次启动应用时会看到一个加载屏幕,这个屏幕通常被称为预加载器(Preloader)。预加载器的主要目的是显示应用程序加载的进度,同时为用户提供一种视觉反馈,让他们知道程序正在准备运行...

    flex 自定义加载进度框

    在Flex应用中,"预加载器"(preloader)是程序启动时显示的一个组件,它的主要功能是在用户等待整个应用程序完全加载时提供反馈。预加载器通常会显示一个进度条,以指示应用程序资源的加载进度。 在“flex自定义...

    flex事件运行流程

    首先,Flex应用程序的启动始于`preloader`阶段,系统管理器(SystemManager)随之创建。SystemManager是Flex应用的核心管理者,它负责应用程序窗口、Application实例、弹出窗口、光标管理,以及ApplicationDomain中的...

    FLEX 系统管理器 SystemManager

    在SWF文件下载过程中,SystemManager负责创建Preloader和DownloadProgressBar,这两个组件跟踪下载进度。当第一帧的数据接收完成后,SystemManager触发进入第二帧的事件,接着进行后续的加载和初始化操作。 总的来...

    Flex启动与初始化

    在 Flex 启动过程中,SystemManager 会创建一个加载器(Preloader),用于加载应用程序所需的资源。加载器是一个 2 帧的 MovieClip,第一帧用于创建加载器,第二帧用于加载应用程序。加载器的外观是通过代码绘制的。...

    FLEX企业应用开发实战.part1

     3.2.2 Preloader  3.2.3 Application的作用和主要属性  3.2.4 通过SWFLoader加载Application  3.2.5 域及跨域访问  3.3 Flex Module  3.3.1 创建模块  3.3.2 模块的编辑与编译  3.3.3 模块文件的...

    FLEX企业应用开发实战.part2

     3.2.2 Preloader  3.2.3 Application的作用和主要属性  3.2.4 通过SWFLoader加载Application  3.2.5 域及跨域访问  3.3 Flex Module  3.3.1 创建模块  3.3.2 模块的编辑与编译  3.3.3 模块文件的...

    flex控制桌面背景

    首先,`Preloader.as` 是一个常见的Flex组件,它负责在应用程序加载之前显示进度条,提高用户体验。在处理桌面背景这样的任务时,可能用到预加载器来确保所有必要的资源(如图片或皮肤)在改变桌面背景前已完全加载...

    Flex企业应用开发实战源代码

    3.2.2 Preloader 90 3.2.3 Application的作用和主要属性 95 3.2.4 通过SWFLoader加载Application 97 3.2.5 域及跨域访问 99 3.3 Flex Module 101 3.3.1 创建模块 102 3.3.2 模块的编辑与编译 104 3.3.3 模块...

    Flex高级组件详细介绍

    - **自定义Preloader**:创建自定义预加载器以增强用户体验。 - **自定义图表组件**:根据业务需求设计和实现定制化的图表组件。 - **高级皮肤专题**:深入探讨如何使用Flex Skin框架为组件创建自定义外观。 - **...

    Flex组件生命周期[收集].pdf

    Flex应用的根对象是SystemManager,这是一个Display Class,继承自flash.display.MovieClip,使得预加载器(Preloader)和应用程序(Application)可以在两个不同的帧中运行。SystemManager有一个...

    flex as资料

    压缩包中的文件名“simple_preloader_2307”可能是一个简单的预加载器(preloader)示例。在Flex应用中,预加载器是加载应用程序的主要组件,它在主应用程序完全加载之前显示进度,以提高用户体验。这个文件可能是用...

    Flex 图 片 显 示

    可以使用`Preloader`类或自定义的预加载策略来实现。 总结,Flex图片显示涉及了`Image`组件、动态加载、图片处理、优化策略等多个方面。通过深入理解这些知识点,开发者能够创建出功能丰富、性能优秀的Flex应用程序...

    BRUSHED-METAL-PRELOADER.rar_FlashMX/Flex源码_FlashMX_

    从描述来看,这是一个适用于FlashMX或Flex的网站加载(preloader)源码,具有金属质感的视觉效果。在网页设计中,预加载器是一种在页面完全加载之前显示的动画,它有助于提升用户体验,让用户知道网站正在加载而不是...

    Flex Flash的关系分析

    preloader帧用于显示应用程序的加载进度,一旦加载完成,进入Application帧,就会创建并初始化Flex的主应用程序(Application类的实例)。这个过程中,Flex应用会经历以下几个关键阶段: - preinitialize:应用实例...

    PreLoader-Animation:使用HTML,CSS的页面的预加载器动画

    display: flex; justify-content: center; align-items: center; background-color: rgba(0, 0, 0, 0.5); z-index: 9999; } .preloader__spinner { width: 50px; height: 50px; border: 3px solid #fff; ...

    flex Custom loading example

    网上找了很多都不完整,上传一个工程给大家分享,采用子类加载swf或者gif的方式显示loading ,gif或者swf文件可以随意换成自己喜欢的。...压缩包内容:preloader和button两种方式显示loading fex3源码

    modular

    5. **优化加载**: 为了提高性能,可以利用Flex的模块预加载策略,如使用`Preloader`类来控制模块的加载顺序和时机。同时,可以考虑使用`swfobject`等库来实现渐进式增强,让不支持Flash的用户也能访问部分内容。 6....

Global site tag (gtag.js) - Google Analytics