Flex 自定义 Zlert 组件!
说明:
原生的 Alert.show 参数,要显示的按钮你只能 Alert.OK | Alert.Cancel 这样;
自定义 Zlert 参数跟原生的 差不多,按钮写法是这样写的: {"btnId":"确定", "btnId2":"其他按钮名称"}
ZlertWindow.mxml: com/components
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init(event)"
width="300" creationPolicy="all">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<s:Fade id="fadeIn" alphaFrom="0" alphaTo="1" duration="1000" />
<s:Fade id="fadeOut" alphaFrom="1" alphaTo="0" duration="2500" />
</fx:Declarations> <fx:Script>
<![CDATA[
import com.events.ZlertedEvent; import mx.events.FlexEvent; import spark.components.Button; public var succFunc:Function;
public var btnsJson:Object = null; public var message:String ; [Bindable]
public var zicon:Object; private function init(event:FlexEvent):void {
initForm();
} public function initForm():void {
var that:Sprite = this;
for (var key:String in btnsJson) {
var btn:Button = new Button();
btn.id = key;
btn.label = btnsJson[key];
btn.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
var _btn:Button = event.currentTarget as Button;
if (succFunc) {
succFunc(_btn.id);
} var altEvt:ZlertedEvent = new ZlertedEvent(ZlertedEvent.CLOSE);
that.dispatchEvent(altEvt);
}); AltForm.addElement(btn);
} var cancelBtn:Button = new Button();
cancelBtn.id="cclBtn";
cancelBtn.label = "取消";
cancelBtn.addEventListener(MouseEvent.CLICK, function(event:MouseEvent){
var altEvt:ZlertedEvent = new ZlertedEvent(ZlertedEvent.CLOSE);
that.dispatchEvent(altEvt);
}); AltForm.addElement(cancelBtn);
} ]]>
</fx:Script> <s:VGroup width="100%" height="100%">
<s:HGroup width="100%" height="100%" horizontalCenter="0" horizontalAlign="left">
<mx:Grid horizontalCenter="0" width="100%">
<mx:GridRow>
<mx:GridItem width="40" verticalAlign="middle" horizontalAlign="center">
<s:Group><s:BitmapImage source="{zicon}" id="iconOn" /></s:Group>
</mx:GridItem>
<mx:GridItem paddingTop="8">
<s:Label text="{message}" verticalAlign="justify" fontSize="14" />
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
</s:HGroup> <s:HGroup id="AltForm" width="100%" height="30" horizontalCenter="0" horizontalAlign="center"> </s:HGroup>
</s:VGroup> </mx:TitleWindow>
ZlertedEvent.as: com/events
package com.events
{
import flash.events.Event; public class ZlertedEvent extends Event
{
public static const CLOSE:String = "close";
public function ZlertedEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
主组件类Zlert.as
package com.command
{
import flash.display.Sprite;
import flash.events.EventPhase; import com.components.ZlertWindow;
import com.events.ZlertedEvent; import mx.controls.Alert;
import mx.core.Application;
import mx.core.FlexGlobals;
import mx.events.FlexEvent;
import mx.managers.ISystemManager;
import mx.managers.PopUpManager; public class Zlert
{
[Embed('assets/skins/alert/tip_question.png')]
private static var ICON_QUESTION:Class;
private static var parent:Sprite public function Zlert()
{
super();
} public static function show(msg:String, title:String = "确定", sprite:Sprite = null, btnsJson:Object = null, cancelHandler:Function = null) : void {
trace("asdfa"); var modal:Boolean = true; parent = sprite;
if (!parent)
{
var sm:ISystemManager = ISystemManager(FlexGlobals.topLevelApplication.systemManager);
// no types so no dependencies
var mp:Object = sm.getImplementation("mx.managers::IMarshalSystemManager");
if (mp && mp.useSWFBridge())
parent = Sprite(sm.getSandboxRoot());
else
parent = Sprite(FlexGlobals.topLevelApplication);
} var alt:ZlertWindow = new ZlertWindow();
alt.title = title;
alt.message = msg;
alt.btnsJson = btnsJson;
alt.zicon = ICON_QUESTION;
alt.succFunc = cancelHandler; alt.addEventListener(ZlertedEvent.CLOSE, function():void{
PopUpManager.removePopUp(alt);
}); PopUpManager.addPopUp(alt, parent, modal);
PopUpManager.centerPopUp(alt);
} }
}
使用方法:
Zlert.show("提示消息?","标题", this, {"btnId1":"确定", "btnId2" : "按钮2"}, function(key:String):void {
if (key != "btnId1") {
//...
}
});
Flex 自定义 Zlert 组件!的更多相关文章
- Flex自定义组件开发之日周月日期选择日历控件
原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...
- Flex自定义组件、皮肤,并调用
标签:Flex 自定义组件 自定义皮肤 主应用调用模块 本程序样例学习自flex 实战教程.但因原教程代码不全,且根据个人需求有更改. 1文件列表 自定义as类Reveal.as,该类实现组件的 ...
- flex 自定义组件的编写
使用flex也很久了,也改过别人写的flex自定义组件,但是就是没有系统的研究下flex组件的编写步骤,和要注意的东西,在这里我参照一本书中的例子,好好的理解下,也为了巩固下自己对flex的理解! 1 ...
- Flex自定义组件开发 - jackyWHJ
一般情况下需要组件重写都是由于以下2个原因: 1.在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展. 2.为了模块化设计或进一步重用,需要对FLEX组件进行组合. ...
- Flex自定义组件开发
一般情况下需要组件重写都是由于以下2个原因:1.在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展.2.为了模块化设计或进一步重用,需要对FLEX组件进行组合.而F ...
- 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放
小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...
- weex 项目开发(五)自定义 过滤函数 和 混合 及 自定义 Header 组件
1.自定义 过滤函数 src / filters / index.js /** * 自定义 过滤函数 */ export function host (url) { if (!url) return ...
- weex 项目开发(四)项目框架搭建 及 自定义 TabBar 组件
1.安装 路由模块 及 状态管理模块 npm install vue-router --save npm install vuex --save 2.自定义 TabBar 组件 src / ...
- 自定义 MessageBox 组件
效果: 公共组件页面: js部分: <script> export default { props: { title: { type: String ...
随机推荐
- 用10分钟,搭建图像处理编程环境,0失败!(python语言,windows系统)
以前,你可能看过很多的文章,开始搭建一个图像处理的编程环境. 结果,按照教程一步一步做的时候,总是出现各种各样的问题. 就算成功了,后续开发过程中要用到不同版本的opencv,不同版本python,更 ...
- React笔记-事件分发
事件分发 之前讲述了事件如何绑定在document上,那么具体事件触发的时候是如何分发到具体的监听者呢?我们接着上次注册的事件代理看.当我点击update counter按钮时,触发注册的click事 ...
- 父类与子类this相关问题
1.SinglyLinkedList: package No3_PolySinglyList; /*实现 带头结点的单链表SinglyLinkedList类*/ public class Singly ...
- MySQL——约束(constraint)详解
该博客说说关于数据库中一个重要的知识点——约束 一.什么是约束约束英文:constraint 约束实际上就是表中数据的限制条件 二.约束作用表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效 ...
- Daily Scrum NO.3
工作概况 符美潇(PM) 昨日完成的工作 1.Daily Scrum.日常会议及日常工作的分配和查收. 2.整合各DEV所写的代码,在TFS上进行Beta阶段第一次代码签入. 今日工作 1.Daily ...
- Java中的基本数据据类型
1.整数类型 类型 字节数 表示范围 byte 1 -128~127 short 2 -32768 ~ 32767 int 4 -2147483648~2147483647 long 8 -92233 ...
- 第一个sprint与第二个sprint阶段总结
总体: 在第一个sprint中,团队里的小伙伴都在积极努力的配合,基本按照流程做了一次Sprint,大家一块进行计划会议,一块估计任务工时,但是还是有一些意外的事情,这段时间大家都没什么精力放在这门上 ...
- 第二个spring冲刺第7天
今天因为停电,所以没什么进展,延迟一天工作,今天当作休息
- Beta阶段敏捷冲刺前准备
一.介绍小组新加入的成员,Ta担任的角色. 新成员一:徐璐琳 风格:酷酷哒 擅长的技术:JAVA,CCNP 编程的兴趣:折磨人的快感 新角色:管理员 一句话宣言:打开开关又是一个机会 新成员二:祁泽文 ...
- tensorflow的一些基础用法
TensorFlow是一个采用数据流图,用于数值计算的开源软件库.自己接触tensorflow比较的早,可是并没有系统深入的学习过,现在TF在深度学习已经成了"标配",所以打算系统 ...