`
hjy2099
  • 浏览: 261334 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

自定义Flex的Loading界面

    博客分类:
  • Flex
阅读更多

这个方法网上已经有人写过例子...

在这里我只是自己做个实例并记录一下..

首先~自定义Flex加载的原理其实就是继承mx.preloaders.DownloadProgressBar类..然后重写相关的方法..

package
{
  import flash.display.*;
  import flash.events.*;
  import flash.net.*;
  import flash.text.TextField;
  import flash.text.TextFormat;
 
  import mx.events.FlexEvent;
  import mx.preloaders.DownloadProgressBar;

  public class LoadingExampleProgressBar extends DownloadProgressBar
  {
    private var logo:Loader;
    private var txt:TextField;
    private var _preloader:Sprite;
    public function LoadingExampleProgressBar()
    {
      logo = new Loader();
      logo.load(new URLRequest("l4cd.png"));
      addChild(logo);
     
      var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");
      txt = new TextField();
      txt.defaultTextFormat = style;
      txt.width = 200;
      txt.selectable = false;
      txt.height = 20;
      addChild(txt);
     
      super();
    }
    //最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~
    override public function set preloader(value:Sprite):void{
      _preloader = value
      //四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕
      _preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);
      _preloader.addEventListener(Event.COMPLETE,load_complete);
      _preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);
      _preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);
     
      stage.addEventListener(Event.RESIZE,resize)
      resize(null);
    }
    private function remove():void{
      _preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);
      _preloader.removeEventListener(Event.COMPLETE,load_complete);
      _preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);
      _preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);
      stage.removeEventListener(Event.RESIZE,resize)
    }
    private function resize(e:Event):void{
      logo.x = (stage.stageWidth - 40)/2;
      logo.y = (stage.stageHeight - 80)/2;
      txt.x = (stage.stageWidth - 200)/2;
      txt.y = logo.y + 40+5;
     
      graphics.clear();
      graphics.beginFill(0x333333);
      graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
      graphics.endFill();
    }
    private function load_progress(e:ProgressEvent):void{
      txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";
    }
    private function load_complete(e:Event):void{
      txt.text = "加载完毕!"
    }
    private function init_progress(e:FlexEvent):void{
      txt.text = "正在初始化..."
    }
    private function init_complete(e:FlexEvent):void{
      txt.text = "初始化完毕!"
      remove()
      //最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
      dispatchEvent(new Event(Event.COMPLETE))
    }
  }
}

自定义了加载类后..我们新建一个app测试一下..

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  preloader="LoadingExampleProgressBar"
  backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#333333, #333333]"
</mx:Application>

不需要写任何代码..
只需要在Application 标签下设置preloader为你刚刚自定义的类(我这是命令叫LoadingExampleProgressBar)
保存后即可看到效果~

下载的地址是最终的效果~~
http://l4cd.net/output/LoadingExample/LoadingExample.html

分享到:
评论

相关推荐

    FLex loading源码

    Flex Loading 源码是基于Adobe Flex框架实现的一种加载组件的源代码,它主要用于在应用程序启动或数据加载过程中展示进度信息。Flex是一个开源的、基于MXML和ActionScript的开发框架,用于构建富互联网应用程序(RIA...

    flex3自定义DownloadProgressBar

    综上所述,自定义Flex 3的DownloadProgressBar是一个结合了组件扩展、样式定制、事件处理和业务逻辑的过程。具体实现细节通常会根据实际项目需求而变化,而提供的SWF文件则可能用于增强进度条的视觉反馈。如果要了解...

    图片压缩flex demo

    它允许开发者使用ActionScript 3.0语言和Flex组件库创建动态、交互式的用户界面。 描述中的"修改路径"可能是指在应用中处理图片时,需要指定输入图片的路径或者保存压缩后图片的新路径。这涉及到文件I/O操作,包括...

    flex tree+checkbox级联勾选

    在IT行业中,Flex Tree是一种常用于数据展示和交互的组件,尤其在构建用户界面时,它能够以树形结构清晰地展示层次数据。配合Checkbox(复选框)功能,可以提供用户选择或过滤数据的便利操作。"Flex Tree + Checkbox...

    Flex电子相册2

    - 使用Flex提供的MXML语言,开发者可以声明式地创建用户界面,将UI组件和逻辑分离,提高代码可读性和维护性。 - `Style`和`Skin`机制允许自定义组件的外观,满足电子相册的视觉需求。 总结来说,Flex电子相册2是...

    Flex DataGrid 分页

    Flex DataGrid 分页是Adobe Flex开发中一个关键的用户界面组件功能,用于处理大量数据时提高性能和用户体验。在Web应用程序中,一次性加载所有数据可能导致页面加载缓慢,消耗大量内存,而分页则能有效地解决这个...

    sss.rar_flex

    综上所述,"sss.rar_flex"示例主要展示了如何在Flex环境中使用Tree组件来实现节点的展开与收缩功能,这涉及到数据绑定、事件处理、节点操作等多个方面,体现了Flex在构建交互式用户界面时的灵活性和强大功能。

    arcgis-samples-flex-develop

    在"arcgis-samples-flex-develop"中,我们可以看到如何结合ArcGIS地图组件和Flex UI组件,构建出功能完备的GIS应用界面。 9. **数据可视化(Data Visualization)** ArcGIS API for Flex支持多种数据可视化方式,...

    Flex 相册管理(个人觉得挺好的)

    在描述中提到的`GalNavigatorButton.mxml`可能就是用于导航的自定义组件,而`PhotoGallery.mxml`可能是整个相册的主界面文件。 2. **数据绑定**:MXML语言支持数据绑定,使得UI组件的状态能够与后台数据模型实时...

    flex 动态树,异步树

    动态树和异步树是Flex在构建用户界面时经常会用到的数据结构,特别是在处理大量数据时,以提高性能和用户体验。以下是对这两个概念的详细解释: 1. Flex中的动态树(Dynamic Tree): 动态树是一种可以实时更新和...

    flex datagrid 分页控件源码

    这可以通过懒加载(lazy loading)策略实现,只在用户滚动到新一页时才加载相应的数据。 6. **交互设计** 良好的分页设计应考虑用户友好性,比如提供跳转至首/末页的选项,显示当前页和总页数,以及提供改变每页...

    flex 模块化modules源码例子

    它可以设置属性如`source`来指定模块的URL,或者使用`moduleFactory`属性来指定自定义的模块工厂。 4. **模块生命周期**:Flex模块有其特定的生命周期,包括加载、初始化、显示和卸载阶段。开发者需要理解这些阶段...

    Flex中tree实现的种种细节

    工具方面,Flex Builder或Flash Builder可能是开发者常用的集成开发环境(IDE),它们提供了可视化的界面设计和代码编辑功能,便于创建和调试Tree组件。此外,调试工具如Flex SDK的命令行编译器和Flex Profiler可以...

    flex动态树_动态图表

    Flex是一款由Adobe开发的富互联网应用程序(RIA)框架,它支持创建交互式的、高性能的用户界面,其中包括动态树和图表。这篇博客“flex动态树_动态图表”可能详细介绍了如何在Flex中实现动态的树形结构和图表。 ...

    Flex中DataGrid和其它控件使用

    5. **HeaderRenderer**和**ItemRenderer**:这两个组件允许我们自定义DataGrid的列头和单元格的外观和行为,以满足特定的界面设计需求。 6. **Sort功能**:DataGrid支持单击列头进行排序,可以自定义排序逻辑。在...

    css3+animation属性制作拆分loading文字加载动画特效.zip

    这种特效可以为网站或应用的加载界面增添趣味性和交互性,提高用户体验。 首先,CSS3是层叠样式表(Cascading Style Sheets)的第三个主要版本,它引入了许多新特性和功能,极大地增强了网页设计的灵活性和动态效果...

    bootstrap遮罩效果

    &lt;div id="loading-spinner" class="d-flex justify-content-center align-items-center h-100"&gt; 加载中... ``` 现在,我们可以编写JavaScript代码来控制遮罩层的显示和隐藏。例如,当进行数据加载时,显示...

    tview:用Go编写的用于终端UI的丰富交互式小部件

    它们带有许多自定义选项,可以轻松扩展以满足您的需求。 安装 go get github.com/rivo/tview 你好,世界 这个基本示例创建了一个标题为“ Hello,World!”的框。 并将其显示在您的终端中: package main import ( ...

    vue实现自定义H5视频播放器的方法步骤

    在本例中,开发者使用了flex布局和vw单位进行响应式设计,确保播放器在不同屏幕尺寸下都能正常工作。 **三、组件实现过程** 1. **组件模板** 组件模板主要包含`&lt;video&gt;`元素和相关的控制界面。`&lt;video&gt;`元素是H5...

    gui.rar_GUI 计算器

    3. **布局管理(Layout Management)**:MATLAB提供了多种布局管理工具,如Grid布局、Box布局和Flex布局,用于控制组件在窗口中的位置和大小。在计算器设计中,通常会使用Grid布局来整齐地排列数字和运算符按钮。 4...

Global site tag (gtag.js) - Google Analytics