`

用Flex的编译参数实现AS3程序的自身预加载(Self Preloading)

    博客分类:
  • AS
阅读更多

http://www.riaidea.com/blog/archives/191.html

好像flashdevlop默认有预先加载

记得在很早的时候,我在blueidea上写过一个关于as3自身加载的帖子,基本思想和as2中的原理类似,而且还曾被人批评为帧的概念太根深蒂 固,as3中要完全抛弃frame。今天,我的一个flashdevelop的as3项目需要做个loading,我不觉得一个小swf去加载大的swf 文件是一种很好的loading解决方案。 因为用的是flex sdk,没法像flash CS3那样创建帧,又不想创建一个fla文件,所以原来的办法似乎没法用了。

于是我翻出以前bit-101上的一片经典的as3自身加载的文章:Preloaders in AS3 , 仔细看看后,发现原来的想法是正确的,只不过在flex中靠的是元数据标签Frame来增加一个工程关键帧类factoryClass,而这个类在 flex项目中默认为mx.managers.SystemManager,并由此控制flex程序的preloading实现。说白了,就是flex程 序的其实都是2帧,第一帧默认是SystemManager类的实例,第二帧才是我们的Application文档类mxml。再进一步查看flex的 as3 compiler的源程序,也证实了这点。

可是,当我用元数据标签Frame来加入preloading的时候,编译后的swf文件尺寸陡增,原来当用元数据标签Frame加入 factoryClass的时候,就会编译很多flex框架类到swf中来,显然这不是我所期望的,这个方法也行不通。但用双帧原理来做 preloading是显然的,因此问题的关键便在于如何创建一个双帧的swf。

当我在flex的as3 compiler的源程序中寻找的时候,突然在flex的编译程序mxmlc的编译参数中看到了一个高级可选参数frames.frame,搜索后找到这个参数在flex-config.xml中的具体用法:
<frames>
      <!-- frames.frame: A SWF frame label with a sequence of classnames that will be linked onto the frame.-->
      <!-- frames.frame usage:
      <frame>
         <label>string</label>
         <classname>string</classname>
      </frame>
      -->
</frames>

这个参数用mxmlc的cmd命令行参数模式为:
-frames.frame label classname

于是我在flashdevelop的项目属性的compiler options里的Additional Compiler Options里加入是一个已有但并未编译到文档类里的类FrameTwoClass:
-frames.frame FrameTwoClass FrameTwoClass
果然,在编译后的swf文件的classes里可以看到一个Frame 2: FrameTwoClass的类,因此便很容易知道,这个参数可以帮我们创建帧并链接到一个指定的类。

到这里为止,我想大家应该都差不多已经知道怎么实现self preloading了吧。创建一个Preloading类并设置为文档类,把我们真正的主程序Application类用刚才的参数 frames.frame编译到第二帧上。在Preloading类中用enterframe事件监听loaderInfo的bytesLoaded和 bytesTotal从而显示加载进度,当加载完后,利用反射方法getDefinitionByName()来创建真正的主程序Application 类的实例,大功告成!

点击查看 demo 源文件

分享到:
评论

相关推荐

    AS3预加载SWF实例源码

    AS3预加载SWF实例源码是用于解决Flash应用程序或动画在加载时可能出现的延迟问题。在大型项目中,SWF文件可能包含大量的图形、音频和视频资源,这些资源的加载时间可能会很长,影响用户体验。预加载(preloading)...

    swf预加载类

    在AS3(ActionScript 3)中,预加载通常通过创建自定义的预加载类实现。这个类负责监视主SWF文件的加载进度,更新加载条或者动态文本以显示当前的加载状态。以下是一些AS3预加载类的关键知识点: 1. **Event监听**...

    懒加载预加载实现源码及笔记整理

    预加载(Preloading)则是另一种策略,它与懒加载相反,是在用户实际需要之前预先加载某些资源。预加载常用于预计用户即将需要的内容,比如页面导航、下一页链接或者游戏的背景音乐。这样,当用户点击或触发这些内容...

    玩转 Android MediaPlayer之视频预加载(优化)

    在处理视频播放时,预加载(Preloading)是一个非常重要的优化策略,它有助于提高用户体验,特别是对于网络视频流而言。预加载技术使得视频在用户实际点击播放之前就开始加载一部分数据,从而减少播放延迟,保证流畅...

    flash的预加载代码

    在Flash开发中,预加载(Preloading)是一个关键步骤,特别是在处理大容量或者包含大量图形、音频和视频内容的项目时。预加载代码是确保用户能够流畅体验Flash内容的一种技术,因为它可以逐步加载资源,避免一次性...

    两套预加载表针代码

    在IT行业中,预加载(Preloading)是一种优化网页性能的技术,它允许开发者预先加载用户可能需要的资源,如JavaScript文件、CSS样式表、图片或字体等,以减少页面加载时间,提升用户体验。在这个主题中,"两套预加载...

    jquery图片预加载延迟加载

    在网页设计和开发中,图片预...预加载保证了关键内容的快速显示,而延迟加载则减少了非必要资源的初期下载,两者结合使用可实现更优化的加载策略。对于大型网站或者图片密集型应用来说,这是一个值得推荐的实践方法。

    预加载瀑布流

    预加载策略主要有三种:懒加载(Lazy Loading)、近似加载(Nearby Loading)和预加载(Preloading)。懒加载只加载用户当前看到的内容;近似加载则加载用户即将看到的内容;预加载则在用户滚动前就加载一部分后续...

    一个用于通过XHR2在浏览器上预加载资源的1kbJavaScript库

    预加载策略分为几种类型,比如预读取(prefetching)、预加载(preloading)和预解析(prerendering)。这个库可能包含了这些策略中的一种或多种,以便根据不同的场景选择最适合的预加载方式。预读取是在后台加载...

    网站顶部显示预加载进度条插件preload.js

    预加载技术是预先加载部分关键资源,如JavaScript、CSS、图片等,使得这些资源在用户实际需要时能够更快地被浏览器解析和使用,从而减少页面首次加载时的空白等待时间。 首先,我们要理解预加载(Preloading)与...

    jQuery实现的图片异步加载和预加载特效源码.zip

    本资源"jQuery实现的图片异步加载和预加载特效源码.zip"提供了一种利用jQuery来优化网页性能的方法,特别关注于图片的处理。在网页设计中,大尺寸或数量众多的图片往往会导致页面加载速度变慢,影响用户体验。通过...

    IIS7.5预加载微软官方扩展组件

    3. **ApplicationInitializationInstaller_x64.msi**:这可能是与应用程序初始化相关的另一个64位组件,可能包含了额外的功能或更新,帮助IIS更好地处理预加载和初始化过程。 4. **安装完成说明.txt**:这是一个文本...

    图片预加载、占位背景图jquery plugin

    `jQuery-preloading-with-image`是一个基于jQuery的插件,专门用于实现图片预加载功能。 在网页设计中,如果图片没有预先加载,当用户滚动页面或切换到含有图片的区域时,可能会出现闪烁或者延迟加载的现象。这种...

    CSS3预加载Loading动画特效.zip

    在现代网页设计中,用户体验是至关重要的因素之一,而预加载(Preloading)技术就是提升用户体验的一种手段。预加载能够使用户在等待页面完全加载的过程中看到动态的反馈,减轻他们对加载时间过长的不耐烦感。"CSS3...

    jQuery页面区域预加载布局代码.zip

    预加载(Preloading)是指在用户实际交互之前,提前加载部分或全部页面资源,如图片、音频、视频等,以减少用户等待时间,提升页面加载速度。在jQuery中,我们可以利用其强大的选择器功能和动画效果来实现各种预加载...

    【JavaScript源代码】javascript实现图片预加载和懒加载.docx

    ### JavaScript 实现图片预加载与懒加载技术解析 #### 一、引言 在现代Web开发中,优化页面加载速度及提升用户体验是非常重要的环节。图片作为网页内容的重要组成部分,其加载方式直接影响着整个页面的性能表现。...

    fragment 懒加载和预加载的解决还包含自定义Tablayout+ViewPage指示器长度+获取本地相册图片并进行压缩的dmo+仿QQ控件底部加号弹框的

    **预加载(Preloading)**:预加载则是在用户当前视图附近的Fragment预先加载,以便于快速切换。在滚动列表或者使用ViewPager时,预加载可以提供平滑的过渡效果,避免用户等待数据加载。在`PagerAdapter`的`...

    CSS3 预加载Loading动画特效源码.zip

    CSS3预加载Loading动画特效源码提供了使用纯CSS技术实现的各种动态加载效果,旨在提高页面加载时的视觉反馈,减少用户的等待感知。下面我们将深入探讨这个主题,了解CSS3在创建这些动画特效中的应用。 首先,CSS3...

    Swift开源项目视频播放器,支持边下边播、预加载、全屏转场和自定义控制层.zip

    这个名为"Swift开源项目视频播放器,支持边下边播、预加载、全屏转场和自定义控制层"的压缩包提供了一个解决方案,它使用Swift编程语言实现,具有丰富的功能特性。 首先,我们要理解什么是边下边播(Streaming)。...

    CSS 实现网页图片的预加载

    预加载(Preloading)是一种优化网页性能的技术,其主要目的是为了提升用户体验。当你在浏览一个网页时,如果页面中的图片或者其他资源加载较慢,可能会导致页面滚动时出现延迟,影响用户体验。通过预加载,可以在...

Global site tag (gtag.js) - Google Analytics