这个方法网上已经有人写过例子...
在这里我只是自己做个实例并记录一下..
首先~自定义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 源码是基于Adobe Flex框架实现的一种加载组件的源代码,它主要用于在应用程序启动或数据加载过程中展示进度信息。Flex是一个开源的、基于MXML和ActionScript的开发框架,用于构建富互联网应用程序(RIA...
综上所述,自定义Flex 3的DownloadProgressBar是一个结合了组件扩展、样式定制、事件处理和业务逻辑的过程。具体实现细节通常会根据实际项目需求而变化,而提供的SWF文件则可能用于增强进度条的视觉反馈。如果要了解...
它允许开发者使用ActionScript 3.0语言和Flex组件库创建动态、交互式的用户界面。 描述中的"修改路径"可能是指在应用中处理图片时,需要指定输入图片的路径或者保存压缩后图片的新路径。这涉及到文件I/O操作,包括...
在IT行业中,Flex Tree是一种常用于数据展示和交互的组件,尤其在构建用户界面时,它能够以树形结构清晰地展示层次数据。配合Checkbox(复选框)功能,可以提供用户选择或过滤数据的便利操作。"Flex Tree + Checkbox...
- 使用Flex提供的MXML语言,开发者可以声明式地创建用户界面,将UI组件和逻辑分离,提高代码可读性和维护性。 - `Style`和`Skin`机制允许自定义组件的外观,满足电子相册的视觉需求。 总结来说,Flex电子相册2是...
Flex DataGrid 分页是Adobe Flex开发中一个关键的用户界面组件功能,用于处理大量数据时提高性能和用户体验。在Web应用程序中,一次性加载所有数据可能导致页面加载缓慢,消耗大量内存,而分页则能有效地解决这个...
综上所述,"sss.rar_flex"示例主要展示了如何在Flex环境中使用Tree组件来实现节点的展开与收缩功能,这涉及到数据绑定、事件处理、节点操作等多个方面,体现了Flex在构建交互式用户界面时的灵活性和强大功能。
在"arcgis-samples-flex-develop"中,我们可以看到如何结合ArcGIS地图组件和Flex UI组件,构建出功能完备的GIS应用界面。 9. **数据可视化(Data Visualization)** ArcGIS API for Flex支持多种数据可视化方式,...
在描述中提到的`GalNavigatorButton.mxml`可能就是用于导航的自定义组件,而`PhotoGallery.mxml`可能是整个相册的主界面文件。 2. **数据绑定**:MXML语言支持数据绑定,使得UI组件的状态能够与后台数据模型实时...
动态树和异步树是Flex在构建用户界面时经常会用到的数据结构,特别是在处理大量数据时,以提高性能和用户体验。以下是对这两个概念的详细解释: 1. Flex中的动态树(Dynamic Tree): 动态树是一种可以实时更新和...
这可以通过懒加载(lazy loading)策略实现,只在用户滚动到新一页时才加载相应的数据。 6. **交互设计** 良好的分页设计应考虑用户友好性,比如提供跳转至首/末页的选项,显示当前页和总页数,以及提供改变每页...
它可以设置属性如`source`来指定模块的URL,或者使用`moduleFactory`属性来指定自定义的模块工厂。 4. **模块生命周期**:Flex模块有其特定的生命周期,包括加载、初始化、显示和卸载阶段。开发者需要理解这些阶段...
工具方面,Flex Builder或Flash Builder可能是开发者常用的集成开发环境(IDE),它们提供了可视化的界面设计和代码编辑功能,便于创建和调试Tree组件。此外,调试工具如Flex SDK的命令行编译器和Flex Profiler可以...
Flex是一款由Adobe开发的富互联网应用程序(RIA)框架,它支持创建交互式的、高性能的用户界面,其中包括动态树和图表。这篇博客“flex动态树_动态图表”可能详细介绍了如何在Flex中实现动态的树形结构和图表。 ...
5. **HeaderRenderer**和**ItemRenderer**:这两个组件允许我们自定义DataGrid的列头和单元格的外观和行为,以满足特定的界面设计需求。 6. **Sort功能**:DataGrid支持单击列头进行排序,可以自定义排序逻辑。在...
这种特效可以为网站或应用的加载界面增添趣味性和交互性,提高用户体验。 首先,CSS3是层叠样式表(Cascading Style Sheets)的第三个主要版本,它引入了许多新特性和功能,极大地增强了网页设计的灵活性和动态效果...
<div id="loading-spinner" class="d-flex justify-content-center align-items-center h-100"> 加载中... ``` 现在,我们可以编写JavaScript代码来控制遮罩层的显示和隐藏。例如,当进行数据加载时,显示...
它们带有许多自定义选项,可以轻松扩展以满足您的需求。 安装 go get github.com/rivo/tview 你好,世界 这个基本示例创建了一个标题为“ Hello,World!”的框。 并将其显示在您的终端中: package main import ( ...
在本例中,开发者使用了flex布局和vw单位进行响应式设计,确保播放器在不同屏幕尺寸下都能正常工作。 **三、组件实现过程** 1. **组件模板** 组件模板主要包含`<video>`元素和相关的控制界面。`<video>`元素是H5...
3. **布局管理(Layout Management)**:MATLAB提供了多种布局管理工具,如Grid布局、Box布局和Flex布局,用于控制组件在窗口中的位置和大小。在计算器设计中,通常会使用Grid布局来整齐地排列数字和运算符按钮。 4...