这个方法网上已经有人写过例子...
在这里我只是自己做个实例并记录一下..
首先~自定义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
分享到:
相关推荐
自定义的loading,可以代替Flex的默认loading。
经将Flex登陆布局的草图设计出来了,Flex登陆界面代码如 图1所示(Flex登陆界面草图代码)演示如 例1(Flex登陆框草图列子演示)。相信大家应该从草图出来的那一刻开始,脑子就开始有想法了,^-^ 因为这个Flex登陆框...
Flex3界面布局中文教程 Canvas layout 容器 1 Absolute模式 1 constraint-based模式: 2 ControlBar layout 容器 4 ApplicationControlBar 容器 6 DividedBox, HDividedBox 和VDividedBox 布局 7...
FLex 无间隙界面切换 FLex 无间隙 界面切换 这个效果可以看看 但是觉得 是想要的
以实例讲解Flex4.0的界面设计,示例有登陆及验证码,状态的切换,图形化报表的设计等
flex 等待界面显示
flex图形界面模板 flash flex Fusioncharts.swc
NULL 博文链接:https://lpyyn.iteye.com/blog/2054024
Flex 登录界面 开发经验分享 希望会帮助正在学习flex的初学人员
flex 自定义组件,UI,flex 自定义组件。
一个完成的Flex4 Air 自定义窗口,可以缩小到托盘中,后台运行
flex的小例子,界面漂亮哦!还不错啦,不下载会后悔哦
Flex4自定义组件 介绍了flex中如何自定义组件以及相关应用
flex 高级自定义组件 需要重写的方法,以及为什么要重写,何时调用等。
Flex视图切换,自定义控件Demo.rar Flex视图切换,自定义控件Demo.rar Flex视图切换,自定义控件Demo.rar Flex视图切换,自定义控件Demo.rar
flex4 自定义事件 用法 源码 完整项目导入可运行
NULL 博文链接:https://liaojuncai.iteye.com/blog/1294268
Flex 自定义ToolTip源代码,可以运行的源代码
flex自定义的树形结构,展开,收缩,多级目录支持
样式化的Flex组件 Flex元素,不再编写更多自定义Flex样式,因为该死安装yarn add styled-flex-componentornpm i styled-flex-component用法import React from 'react' ;import Flex , { FlexItem } from 'styled-...