Flex AIR自定义Mobile的弹出框组件
做Flex Mobile开发的人应该知道,Flex为手机应用并没有提供弹出框组件,需要自定义。
通过查找文档、资料,我做出一个效果还算不错的弹出框组件,可以适用于手机设备上,不多讲,直接贴源码,相信对Flex了解的人都可以一看就懂。
首先,需要MXML定义弹出框组件:
<s:SkinnablePopUpContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:itemrenderer="com.adobe.mobilecrud.view.itemrenderer.*"
width="{screenX * 0.75}" height="{screenY * 0.25}" backgroundAlpha="0"
creationComplete="CenterPopUp()"
preinitialize="screen_initializeHandler(event)"> <fx:Script>
<![CDATA[
import mx.core.FlexGlobals;
import mx.events.FlexEvent; [Bindable]
public var title:String = "";
[Bindable]
public var message:String = ""; [Bindable]
private var screenX:Number;
[Bindable]
private var screenY:Number; // 使应用程序居中
private function CenterPopUp():void{
this.x = FlexGlobals.topLevelApplication.width / 2 - this.width / 2;
this.y = FlexGlobals.topLevelApplication.height / 2 - this.height / 2; }
// 初始化窗口大小
protected function screen_initializeHandler(event:FlexEvent):void
{
screenX = Capabilities.screenResolutionX;
trace("screenX:"+screenX);
screenY = Capabilities.screenResolutionY;
} ]]>
</fx:Script> <s:Rect width="100%" height="100%" radiusX="10" radiusY="10">
<s:stroke>
<s:SolidColorStroke color="#C2C6C3" weight="1"/>
</s:stroke>
<s:fill>
<s:SolidColor alpha="1.0" color="white"/>
</s:fill>
</s:Rect> <s:VGroup width="100%" height="100%" gap="0" paddingTop="1">
<s:Group width="100%" height="50">
<s:Rect width="100%" height="100%" radiusX="10" radiusY="10">
<s:fill>
<s:LinearGradient rotation="90">
<s:entries>
<s:GradientEntry color="#f9f8f6" ratio="0.00"/>
<s:GradientEntry color="#e3dfd7" ratio="0.60"/>
<s:GradientEntry color="#f7f6f2" ratio="1.00"/>
</s:entries>
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:HGroup width="100%" height="100%" verticalAlign="middle">
<s:Image source="@Embed('assets/alert/w1.png')"/>
<s:Label color="#EE9F29" fontSize="30" fontWeight="bold" text="{title}"/>
</s:HGroup>
</s:Group> <s:Line width="100%">
<s:stroke>
<s:LinearGradientStroke caps="round" weight="1">
<s:entries>
<s:GradientEntry color="#c2bfad" ratio="0.5"/>
</s:entries>
</s:LinearGradientStroke>
</s:stroke>
</s:Line> <s:VGroup width="100%" height="50%" horizontalAlign="center" verticalAlign="middle">
<s:Label width="92%" height="100%" color="#5a5a5a" fontSize="25" lineBreak="toFit"
maxDisplayedLines="2" text="{message}" textAlign="center"
verticalAlign="middle"/>
</s:VGroup> <s:HGroup width="100%" color="#5a5a5a" fontSize="18" horizontalAlign="center">
<s:VGroup width="50%" horizontalAlign="center">
<s:Button id="btnOk" width="100" height="40" label="确 定" chromeColor="#e3dfd7"/>
</s:VGroup> <s:VGroup width="50%" horizontalAlign="center">
<s:Button id="btnCancel" width="100" height="40" label="取 消" chromeColor="#e3dfd7"/>
</s:VGroup> </s:HGroup>
</s:VGroup>
</s:SkinnablePopUpContainer>
组件定义成功后,我们可以写一个as文件,拿它来调用mxml文件:
package alert
{
import flash.display.DisplayObjectContainer;
import flash.events.MouseEvent; import mx.core.FlexGlobals; import spark.components.View;
import spark.events.PopUpEvent; public class Confirm
{
private static var confirm:Confirm = null; private var confirmView:AlertConfirmView = new AlertConfirmView(); private var closeHandler:Function = null; public static function getInstance():Confirm{
if(confirm == null){
confirm = new Confirm();
} return confirm;
} public function show(owner:DisplayObjectContainer,text:String = '',title:String = '', closeHandler:Function = null):void{
confirmView.title = title;
confirmView.message = text; confirmView.open(owner,true); if(closeHandler != null){
this.closeHandler = closeHandler;
//confirmView.addEventListener(PopUpEvent.CLOSE,closeHandler);
}else{ } confirmView.btnOk.addEventListener(MouseEvent.CLICK,btnClose_clickHandler);
confirmView.btnCancel.addEventListener(MouseEvent.CLICK,btnClose_clickHandler);
} // 处理按钮监听事件
protected function btnClose_clickHandler(event:MouseEvent):void
{
confirmView.btnOk.removeEventListener(MouseEvent.CLICK,btnClose_clickHandler);
confirmView.btnCancel.removeEventListener(MouseEvent.CLICK,btnClose_clickHandler); trace(event.currentTarget.id); if(event.currentTarget.id == 'btnOk'){
confirmView.addEventListener(PopUpEvent.CLOSE,closeHandler);
trace("YES");
}else{
trace("NO");
} confirmView.close();
}
// 取消PopUp监听
public function cancelMonitor():void{
confirmView.removeEventListener(PopUpEvent.CLOSE,closeHandler);
} }
}
其实,内容很简单,关于这方面的资料网上也是有一些的,但尽善尽美的东西却很少,我写的这个也算不得很完美,不过已经很实用了。
源代码下载地址:http://download.csdn.net/detail/zuiwuyuan/8020273
Flex AIR自定义Mobile的弹出框组件的更多相关文章
- 关于隐式创建vue实例实现简化弹出框组件显示步骤
我们在使用vue写alert组件的时候,经常是定义了一个alert.vue,然后引入alert.vue,然后配置参数等等,非常繁琐,那有没有一种方式可以像window.alert("内容&q ...
- 基于Vue.js PC桌面端弹出框组件|vue自定义弹层组件|vue模态框
vue.js构建的轻量级PC网页端交互式弹层组件VLayer. 前段时间有分享过一个vue移动端弹窗组件,今天给大家分享一个最近开发的vue pc端弹出层组件. VLayer 一款集Alert.Dia ...
- 自定义Bootstrap样式弹出框
最近做的一些功能需要用到Bootstrap,然而原来的系统并没有引入Bootstrap,为了新写的控件能够应用于老的页面,又不需要在老的页面上引入全套的Bootstrap文件决定写一个模仿Bootst ...
- co-dialog弹出框组件-版本v2.0.1
具体案例查看co-dialog:https://koringz.github.io/co-dialog/index.html 2.0.1版本优化项,代码压缩,修复PC和移动端自适应,修复显示弹出框浏览 ...
- co-dialog弹出框组件-版本v2.0.0
co-dialog theme 访问git:co-dialog 版本v2.0.0 主题2 coog.app('.theme2').use({ title: 'JUST CHECKING.', mess ...
- ReactNative: 使用弹出框组件ActionSheetIOS组件
一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...
- 安卓开发之自定义一个view弹出框
https://www.cnblogs.com/muyuge/p/6152167.html
- android自定义弹出框样式实现
前言: 做项目时,感觉Android自带的弹出框样式比较丑,很多应用都是自己做的弹出框,这里也试着自己做了一个. 废话不说先上图片: 实现机制 1.先自定义一个弹出框的样式 2.自己实现CustomD ...
- UIPresentationController - iOS自定义模态弹出框
参考: https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/Definin ...
随机推荐
- 26718汉字,gbk是23940个汉字,gb18030有76556个汉字
1 a 厑 吖 呵 啊 嗄 嬶 腌 錒 锕 阿 仰 卬 岇 昂 昻 枊 盎 肮 腌 軮 醠 雵 骯 侒 俺 儑 匎 匼 厂 厈 唵 啽 垵 埯 堓 媕 安 屵 岸 峎 峖 广 庵 按 揞 晻 暗 案 ...
- opencv 图像基本操作
目录:读取图像,获取属性信息,图像ROI,图像通道的拆分和合并 1. 读取图像 像素值返回:直接使用坐标即可获得, 修改像素值:直接通过坐标进行赋值 能用矩阵操作,便用,使用numpy中的array ...
- iView3.x Anchor(锚点)组件 导航锚点
iView3.x Anchor(锚点)组件 导航锚点 iview 3.x框架中新添了一个Anchor(锚点组件),用这个组件去做页面的分类导航正好合适,但是苦于官方文档太过抽象研究了一整天,才勉强可以 ...
- 介绍Provide以及Inject
介绍 Vue 的 Provide 以及 Inject Provide 以及 Inject 是 Vue 中用于祖先元素向其所有后台元素注入依赖的接口. 具体用法 // Data.vue ... expo ...
- console 中的格式化打印(占位符),和样式定义
格式化打印 Gecko 9.0 (Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6) 首次发布对string substitutions的支持.你可以在传递给 ...
- log4j:ERROR Could not read configuration file [log4j.properties]
遇到这个错误,程序能够正常运行,log4j.properties也在classpath中,后来在网上查了资料,把下面这个语句去掉就好啦. PropertyConfigurator.configure( ...
- 大数据ETL详解
ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...
- 纯CSS3绘制的黑色图标按钮组合
在线演示 本地下载
- iOS将image转90,180,270度的方法
http://blog.sina.com.cn/s/blog_6602ffbc0101ckx3.html 这里要分享的是将image旋转,而不是将imageView旋转,原理就是使用quartz2D来 ...
- 2019-10-31-C#-强转空会不会出现异常
title author date CreateTime categories C# 强转空会不会出现异常 lindexi 2019-10-31 8:53:6 +0800 2019-9-10 11:4 ...