Flex 界面初始化有时那个标准的进度条无法显示,界面长时间会处理空白的状态!我们来自定义一个进度条,

这个进度条加载在 Application 应用程序界面的 <s:Application 标签的 preinitialize 属性上:

preinitialize="preInit(event, '')"

它就可以比 Flex 自执行的正常显示。

1.组件ZtipWindow.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
addedEffect="{fadeIn}" removedEffect="{fadeOut}" > <fx:Script>
<![CDATA[
import events.ZTipEvent; import mx.managers.PopUpManager; public var position:Point; [Bindable]
public var icon:Object; [Bindable]
public var message:String; [Bindable]
public var close:Object; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
if (position)
{
x = position.x - unscaledWidth / 2;
y = position.y - unscaledHeight / 2;
}
super.updateDisplayList(unscaledWidth, unscaledHeight);
} protected function cleTip_clickHandler(event:MouseEvent):void
{
this.dispatchEvent(new ZTipEvent(ZTipEvent.CLOSE));
} public function hideClose():void {
cleTip.visible = false;
cleTip.height = 0;
iconOn.top = 12;
lblOn.top = 10; // if (Number(iconOn.bottom) < 15)
// iconOn.bottom = 15;
} public function showClose():void {
cleTip.visible = true;
cleTip.height = 18;
iconOn.top = 25;
lblOn.top = 32; // if (Number(iconOn.bottom) < 15)
// iconOn.bottom = 15;
} ]]>
</fx:Script> <fx:Declarations>
<s:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="1000" />
<s:Fade id="fadeOut" alphaFrom="1" alphaTo="0" duration="2500" />
</fx:Declarations> <s:layout>
<s:BasicLayout/>
</s:layout> <s:BitmapImage left="0" right="0" top="0" bottom="0" source="@Embed(source='assets/skins/alert/tip_bgz.png', scaleGridLeft='5', scaleGridRight='11', scaleGridTop='6', scaleGridBottom='48')" /> <s:BitmapImage left="10" top="25" source="{icon}" id="iconOn" /> <s:Button top="10" right="10" icon="{close}" click="cleTip_clickHandler(event)" id="cleTip" width="18" height="18" /> <s:Label left="45" right="10" top="32" bottom="20" text="{message}" id="lblOn" verticalAlign="middle" />
</s:Group>

2.事件ZTipEvent.as

package events
{
import flash.events.Event; public class ZTipEvent extends Event
{
public static const CLOSE:String = "close";
public var detail:int ;
public function ZTipEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, detail:int = -1)
{
super(type, bubbles, cancelable);
this.detail = detail;
}
}
}

3.主程序类Zloading.as

package command
{
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.utils.setTimeout; import components.ZtipWindow;
import events.ZTipEvent; import mx.controls.Alert;
import mx.core.FlexGlobals;
import mx.events.CloseEvent;
import mx.managers.PopUpManager; import spark.components.Application; public class Zloading
{
[Embed('assets/skins/alert/tip_loading.png')]
private static var ICON_LOADING:Class; [Embed(source="assets/skins/icon/icon_delete.png")]
private static var ICON_CLOSE:Class; private static var tip:ZtipWindow = null;
private static var mtip:ZtipWindow = null;
private static var isloading:Boolean = false;
public function Zloading()
{ } public static function showTip(message:String, flag:Boolean=true):void { if (isloading && tip && flag) {
PopUpManager.removePopUp(tip);
} isloading = true;
var showX:Number = Application(FlexGlobals.topLevelApplication).width / 2;
var showY:Number = Application(FlexGlobals.topLevelApplication).height / 1.5;
var pos:Point = new Point(showX, showY);
var app:Application = FlexGlobals.topLevelApplication as Application; if (flag || (flag == false && tip == null)) {
tip = new ZtipWindow();
} if(message.length>80)
{
tip.message= message.substr(0,130)+"\r\n"+message.substr(130,message.length-1)
}
else
{
tip.message = message;
} tip.icon = ICON_LOADING;
tip.close = ICON_CLOSE;
tip.hideClose(); PopUpManager.addPopUp(tip, app);
PopUpManager.centerPopUp(tip); tip.addEventListener(MouseEvent.MOUSE_DOWN, function():void{
if (!tip)
return;
tip.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
});
} public static function timeTip(message:String, pos:Point = null, delay:int = 3000):void { if (mtip != null) {
PopUpManager.removePopUp(mtip);
} if(!pos)
{
var showX:Number = Application(FlexGlobals.topLevelApplication).width / 2;
var showY:Number = Application(FlexGlobals.topLevelApplication).height / 1.5;
pos = new Point(showX, showY);
} var app:Application = FlexGlobals.topLevelApplication as Application; mtip = new ZtipWindow();
if(message.length>80)
{
mtip.message= message.substr(0,130)+"\r\n"+message.substr(130,message.length-1)
}
else
{
mtip.message = message;
} mtip.icon = ICON_LOADING;
mtip.position = pos;
mtip.close = ICON_CLOSE;
mtip.hideClose(); PopUpManager.addPopUp(mtip, app);
PopUpManager.centerPopUp(mtip); mtip.addEventListener(MouseEvent.MOUSE_DOWN, function():void{
if (!mtip)
return;
mtip.dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
}); setTimeout(function():void {
PopUpManager.removePopUp(mtip);
}, delay);
} public static function close(result:String = '数据操作中, 请稍后...', delay:int = 3000):void
{
if (tip != null) {
if (delay != 0) {
setTimeout(function():void {
tip.message = result;
PopUpManager.removePopUp(tip);
isloading = false;
}, delay);
} else {
tip.message = result;
tip.showClose();
tip.addEventListener(ZTipEvent.CLOSE, function():void {
PopUpManager.removePopUp(tip);
isloading = false;
});
}
}
}
}
}

4.调用方法

<s:Application
...
preinitialize="preInit(event, '')"
private function preInit(event:Event, msg:String):void
{
Zloading.showTip("初始化, 请稍后...");
}

Flex 编写 loading 组件的更多相关文章

  1. Angular23 loading组件、路由配置、子路由配置、路由懒加载配置

    1 需求 由于Angular是单页面的应用,所以在进行数据刷新是进行的局部刷新:在进行数据刷新时从浏览器发出请求到后台响应数据是有时间延迟的,所以在这段时间就需要进行遮罩处理来提示用户系统正在请求数据 ...

  2. vue2.0 仿手机新闻站(五)全局的 loading 组件

    1.组件结构 index.js const LoadingComponent = require('./Loading.vue') const loading = { install: functio ...

  3. ReactJS实践(一)—— FrozenUI React化之Loading组件

    在前面我们通过四篇文章入门了React的大部分主要API,现在则开始进入实践环节. 实践系列的开篇打算拿我司的FrozenUI来试验,将其部分UI组件进行React化,作为第一篇实践文章,将以较简单的 ...

  4. flex的Accordion组件头部文本居中显示

    flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 <?xml version="1.0" ...

  5. iOS应用日志:开始编写日志组件与异常日志

    应用日志(一):开始编写日志组件 对于那些做后端开发的工程师来说,看 LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试 ...

  6. Vue 封装的loading组件

    <template> <div class="loadEffect"> <span></span> <span>< ...

  7. vux 使用 loading 组件

    1)声明引入Loading import { Loading } from 'vux' 2)在模版底部添加 组件(需要添加到 template>div 标签里) <template> ...

  8. 【转载】用纯粹的C++编写COM组件

    原文:http://blog.csdn.net/ghj1976/article/details/3441 下载本文代码 本文提供一个完全用C++实现的进程内(DLL)COM服务器,不要ATL或MFC提 ...

  9. React Native封装Toast与加载Loading组件

    React Native开发封装Toast与加载Loading组件 在App开发中,我们避免不了使用的两个组件,一个Toast,一个网络加载Loading,在RN开发中,也是一样,React Nati ...

随机推荐

  1. raft--分布式一致性协议

    0. 写在前面的话 一直从事分布式对象存储工作,在分布式对象存储的运营,开发等工作中,数据一致性是至关重要的.因此想写一篇关于分布式一致性的文章.一来,可以和大家分享.二来,可以提高自己的文字提炼能力 ...

  2. HTTP2初探

    背景 本文是对Google博客上文章的翻译和笔记.以及一些待解决的问题记录. Google 博客上这篇文章的中文版有很多翻译错误. 概述 HTTP/2 仍是对之前 HTTP 标准的扩展,而非替代.HT ...

  3. win2003无线网卡驱动无法安装解决方法

    Windows 2003 Server对无线网卡的pci资源分配出了问题,而笔记本bios中屏蔽了pci配置项,无法修改. 打开资源管理器菜单,工具-文件夹选项-显示,去掉“隐藏受保护的操作系统文件” ...

  4. Linux内核分析(第三周)

    构造一个简单的linux系统menuOS. 一.简介 1.两把宝剑:中断-上下文的切换(保存现场和恢复现场) 进程-上下文的切换 2.linux-3.18.6 arch/x86目录下的代码是我们重点关 ...

  5. git的使用与学习

    1.将本地项目推送到Github $ git remote add origin 仓库地址 // 关联远程仓库 $ git push origin master // 推送到远程仓库 如果远程仓库有本 ...

  6. Android开发环境(发展演变)

    初步接触android,要安装android开发工具时是使用eclipse,这是因为百度靠前的搜索项是eclipse来开 发android,而且那时还不知道android studio. 首先是下载配 ...

  7. Alpha发布评价

    1.奋斗吧兄弟组 食物链系统 是一个比较成熟的工具,可以应用于生物课程的辅助讲解,具有很强的软件目的性和实用性. 2.Newbee 俄罗斯方块 因为选了很经典的游戏,所以在创新上下了一定功夫,可是没有 ...

  8. Caffe搭建:Ubuntu14.04 + CUDA7.0 + opencv3.0 + Matlab2014A

    从Hinton在science上发表深度学习训练开创新的文章以来,深度学习火了整整有3年多,而且随着新的硬件和算法的提出,深度学习正在应用于越来越多的领域,发挥其算法的优势. 实验室并没有赶上第一波深 ...

  9. asp.net使用动态模版导出word

    具体思路: 1.先制作Word模版,使用文本框+书签的方式来设计模版: 2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件: 3.后台取得数据,参照网页渲染的方 ...

  10. webapi Route 特性

    转载:http://www.th7.cn/Program/net/201410/302571.shtml ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程 ...