说明:

原生的 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. Assetbundle管理与加载

    最近在做项目优化的时候发现公司的项目用的还是老式的WWW去加载assetbundle资源的形式,而且是通过在两个Update里面分开加载AB和Asset的,这样虽然避免了协程的的使用,但是把一件事分开 ...

  2. spring boot 2.0 源码分析(五)

    在上一篇文章中我们详细分析了spring boot是如何准备上下文环境的,今天我们来看一下run函数剩余的内容.还是先把run函数贴出来: /** * Run the Spring applicati ...

  3. 【Beta阶段】第一次Scrum Meeting!

    本次会议为第一次Scrum Meeting会议~ 会议时长:20分 会议地点:依旧是7公寓1楼会客室   昨日任务一览 明日任务一览 刘乾 预定任务:(未完成)#128 学习如何在Github上自动构 ...

  4. 20135220谈愈敏Blog5_系统调用(下)

    系统调用(下) 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 给Me ...

  5. Sprint report

    Sprint report 一.需求分析:随着在校大学生人数的不断增加,许多高校出现了许多个校区并存的局面,并且校区之间的地理位置跨度非常大,给高校选课带来了很大的不方便,数据处理手工操作,工作量大, ...

  6. robotframework 赋予临时id

    有的时候用rf执行ui自动化测试脚本的时候,一直提示找不到元素 (前提是没有id) 那么这个时候 我们可以随便赋予一个临时id Assign Id To Element      xpath=//*[ ...

  7. 如何用js替换文本里的换行符 \n?

    有下面一段文本, 在编辑器里的格式如下: <div id="foo"> line1line2line3</div> 切换到浏览器, 显示如下 line1li ...

  8. C# 妈妈再打我一下生成器

    设计背景 网上很火的一个"妈妈再打我一下"的漫画图片,给了网友无限的想象发挥空间,此小程序可以给图片添加配文的形式,快速生成图片 设计思路 GDI+ 绘图技术,在图片基础上添加文字 ...

  9. ubuntu系统部署web项目

    1.安装java 下载java安装文件 可至http://www.oracle.com/technetwork/java/javase/downloads/index.html下载最新的JDK版本,当 ...

  10. Queries about less or equal elements CodeForces - 600B(二分)

    You are given two arrays of integers a and b. For each element of the second arraybj you should find ...