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 ...
随机推荐
- Assetbundle管理与加载
最近在做项目优化的时候发现公司的项目用的还是老式的WWW去加载assetbundle资源的形式,而且是通过在两个Update里面分开加载AB和Asset的,这样虽然避免了协程的的使用,但是把一件事分开 ...
- spring boot 2.0 源码分析(五)
在上一篇文章中我们详细分析了spring boot是如何准备上下文环境的,今天我们来看一下run函数剩余的内容.还是先把run函数贴出来: /** * Run the Spring applicati ...
- 【Beta阶段】第一次Scrum Meeting!
本次会议为第一次Scrum Meeting会议~ 会议时长:20分 会议地点:依旧是7公寓1楼会客室 昨日任务一览 明日任务一览 刘乾 预定任务:(未完成)#128 学习如何在Github上自动构 ...
- 20135220谈愈敏Blog5_系统调用(下)
系统调用(下) 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 给Me ...
- Sprint report
Sprint report 一.需求分析:随着在校大学生人数的不断增加,许多高校出现了许多个校区并存的局面,并且校区之间的地理位置跨度非常大,给高校选课带来了很大的不方便,数据处理手工操作,工作量大, ...
- robotframework 赋予临时id
有的时候用rf执行ui自动化测试脚本的时候,一直提示找不到元素 (前提是没有id) 那么这个时候 我们可以随便赋予一个临时id Assign Id To Element xpath=//*[ ...
- 如何用js替换文本里的换行符 \n?
有下面一段文本, 在编辑器里的格式如下: <div id="foo"> line1line2line3</div> 切换到浏览器, 显示如下 line1li ...
- C# 妈妈再打我一下生成器
设计背景 网上很火的一个"妈妈再打我一下"的漫画图片,给了网友无限的想象发挥空间,此小程序可以给图片添加配文的形式,快速生成图片 设计思路 GDI+ 绘图技术,在图片基础上添加文字 ...
- ubuntu系统部署web项目
1.安装java 下载java安装文件 可至http://www.oracle.com/technetwork/java/javase/downloads/index.html下载最新的JDK版本,当 ...
- 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 ...