说明:

原生的 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 组件!的更多相关文章

  1. Flex自定义组件开发之日周月日期选择日历控件

    原文:Flex自定义组件开发之日周月日期选择日历控件         使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的 ...

  2. Flex自定义组件、皮肤,并调用

    标签:Flex  自定义组件  自定义皮肤  主应用调用模块 本程序样例学习自flex 实战教程.但因原教程代码不全,且根据个人需求有更改. 1文件列表 自定义as类Reveal.as,该类实现组件的 ...

  3. flex 自定义组件的编写

    使用flex也很久了,也改过别人写的flex自定义组件,但是就是没有系统的研究下flex组件的编写步骤,和要注意的东西,在这里我参照一本书中的例子,好好的理解下,也为了巩固下自己对flex的理解! 1 ...

  4. Flex自定义组件开发 - jackyWHJ

    一般情况下需要组件重写都是由于以下2个原因: 1.在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展. 2.为了模块化设计或进一步重用,需要对FLEX组件进行组合. ...

  5. Flex自定义组件开发

    一般情况下需要组件重写都是由于以下2个原因:1.在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展.2.为了模块化设计或进一步重用,需要对FLEX组件进行组合.而F ...

  6. 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放

    小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...

  7. weex 项目开发(五)自定义 过滤函数 和 混合 及 自定义 Header 组件

    1.自定义  过滤函数 src / filters / index.js /** * 自定义 过滤函数 */ export function host (url) { if (!url) return ...

  8. weex 项目开发(四)项目框架搭建 及 自定义 TabBar 组件

    1.安装  路由模块  及  状态管理模块 npm install vue-router --save npm install vuex --save 2.自定义  TabBar  组件 src / ...

  9. 自定义 MessageBox 组件

    效果: 公共组件页面: js部分: <script>   export default {     props: {       title: {         type: String ...

随机推荐

  1. Git 命令简单罗列

    源教程出自 廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 整 ...

  2. Tomcat源码学习(1)

    Tomcat源码学习(1) IntelliJ IDEA 17.3.3 导入 Tomcat 9.0.6源码 下载源码 tomcat_9.0.6 启动 IDEA. 点击 Open,选择刚才下载的文件解压后 ...

  3. PTA (Advanced Level) 1002 A+B for Polynomials

    1002 A+B for Polynomials This time, you are supposed to find A+B where A and B are two polynomials. ...

  4. highcharts多个Y轴

    http://blog.sina.com.cn/s/blog_6a53599101019qax.html 多个Y轴的实现方法在于把yAxis设置成一个数组,里面的一个对象代表一条Y轴,利用opposi ...

  5. 基于Activiti工作流引擎实现的请假审核流程

    概要 本文档介绍的是某商用中集成的Activiti工作流的部署及使用,该框架用的Activiti版本为5.19.0.本文档中主要以一个请假流程为例子进行说明,该例子的流程图如下: 这是一个可以正常运作 ...

  6. C++中清空缓冲区

    C++中标准输入cin有多种输入方式.. 这篇文章罗列的还是简要易懂的.C++输入cin详解...如果只是简单的使用cin>>的话,会单个token的读入.但是会忽略换行符,空格,制表符等 ...

  7. 第三周(JAVA编写的 wordcount)

    import java.io.*; public class WordCount { public static int words=1; public static int lines=1; pub ...

  8. 清华大学OS操作系统实验lab1练习知识点汇总

    lab1知识点汇总 还是有很多问题,但是我觉得我需要在查看更多资料后回来再理解,学这个也学了一周了,看了大量的资料...还是它们自己的80386手册和lab的指导手册觉得最准确,现在我就把这部分知识做 ...

  9. [置顶网]POWER 9为云与智能打造强大引擎

    POWER 9为云与智能打造强大引擎 关键字: 浪潮商用机器 POWER9 至顶网服务器频道 (文/董培欣): 从全球角度看,政治经济波动持续.逆全球化趋势抬头.技术加速变革商业等因素促使企业需要数字 ...

  10. 美团 OCTO 分布式服务治理系统

    OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册.服务自动发现.服务管理.容错处理.数据可视化.服务监控报警.服务分组等.本文总结了 OCTO 架构原理.Java 应用的 ...