package util {
import flash.text.TextFieldAutoSize;
import flash.utils.Dictionary;
import flash.utils.getQualifiedClassName;
import mx.binding.utils.BindingUtils;
import mx.containers.Panel;
import mx.core.UIComponent;
import mx.core.UITextField;
import mx.core.mx_internal;
use namespace mx_internal;
/**
* 遮罩工具类。
* 非Flex里面的mask概念,而是仿Ext的一层半透明控件
* @author simon.fish
*/
public class MaskUtil {
/**
* 存储已经建立遮罩的容器。
* 主要是去掉遮罩使用
* @default
*/
private static const cache:Dictionary = new Dictionary(true);
/**
*
*/
public function MaskUtil() {
//TODO: implement function
}
/**
* 建立遮罩
* @param container
* @return
*/
public static function mask(container:UIComponent,text:String=null):Boolean{
//先从缓存里面取遮罩 IUITextField(createInFontContext(UITextField))
var mask:UIComponent = cache[container] as UIComponent;
//如果取不出来,还未建立过遮罩
if(mask == null){
mask = new UIComponent();
mask.tabEnabled = false;
mask.alpha = 0.4;
//Alert的背景色
//mask.graphics.beginFill(14540252,100);
mask.graphics.beginFill(0xADA2A2);
//对于像Panel这样有title的特殊处理,以处理错位
if(container is Panel){
//得到标题栏高度,getHeaderHeightProxy为mx_internal.已经getHeaderHeightProxy需要3.2以上
var hh:Number = Panel(container).getHeaderHeightProxy()+1;
//left border
var lb:Number = container.getStyle("borderThicknessLeft");
mask.graphics.drawRect(0-lb, 0-hh, container.width, container.height);
}else{
mask.graphics.drawRect(0, 0, container.width, container.height);
}
//加文字
if(text != null ){
var textField:UITextField = createTextField(container);
textField.text = text;// " Loading... ";
mask.addChild(textField);
}
container.addChild(mask);
cache[container] = mask;
}else{
//如果已经建立过遮罩,直接设成可见
mask.visible = true;
}
return true;
}
/**
* 建立加载的遮罩
* @param container
* @return
*/
public static function loadMask(container:UIComponent):Boolean{
return mask(container," Loading... ");
}
/**
* 取消遮罩
* @param container
* @return
*/
public static function unmask(container:UIComponent):void{
//先从缓存里面取遮罩
var mask:UIComponent = cache[container] as UIComponent;
//只处理建立过遮罩
if(mask != null){
//如果已经建立过遮罩,直接设成不可见
mask.visible = false;
}
}
/**
* 创建中间的文字。
* @param container
* @return
*
*/
private static function createTextField(container:UIComponent):UITextField {
var className:String = getQualifiedClassName(UITextField);
var text = container.moduleFactory.create(className) as UITextField;
text.tabEnabled = false;
text.alpha = 0.4;
text.background = true;
text.borderColor = 0x31A5EA;
text.border = true;//BindingUtils.bindProperty(
text.thickness = 1;
text.selectable = true;
text.autoSize = TextFieldAutoSize.CENTER;
//text.backgroundColor = 0x06A0ED;
BindingUtils.bindProperty(text,"x",container,{
name:"width",
getter: function(host) { return (host.width-text.width)/2; }
});//(container.width - text.width) / 2);
BindingUtils.bindProperty(text,"y",container,{
name:"height",
getter: function(host) { return (host.height-text.height)/2; }
});
//BindingUtils.bindProperty(text,"y",container,(container.height - text.height) / 2);
// text.x = (container.width - text.width) / 2;
// text.y = (container.height - text.height) / 2;
return text;
}
}
}
仿Ext风格的遮罩工具类。
![](http://dl.iteye.com/upload/attachment/182847/87768585-330a-3ee4-8caf-dc70ab5a9bec.jpg)
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0018/2847/87768585-330a-3ee4-8caf-dc70ab5a9bec-thumb.jpg)
- 大小: 22.4 KB
分享到:
相关推荐
本篇文章将深入探讨Flex中的绘图和遮罩功能,以及它们在实际应用中的重要性。 首先,让我们了解Flex中的绘图机制。Flex提供了Sprite类,它是ActionScript 3中的一个基础图形容器,允许开发者直接在舞台上绘制图形。...
在Flex AS3应用程序开发中,遮罩(Masking)是一种...总的来说,遮罩是Flex AS3中一个强大的工具,能够提升UI设计的灵活性和视觉吸引力。通过熟练掌握遮罩技术,开发者可以创建出更加丰富和动态的RIA和Adobe AIR应用。
自己整理的的一个仿Extjs局部遮罩,可带进度条。只是一个思路,组件有些小问题,比如组件大小改变时,遮罩没有随着组件大小变。大家使用时候可以优化了下。
本文将详细介绍如何在Flex 3.5及以上版本中利用遮罩技术实现图片裁剪功能。 遮罩(Masking)是ActionScript 3和Flex中一个强大的图形处理特性,它允许我们隐藏或显示显示对象的一部分。在图片裁剪场景中,遮罩可以...
屏幕遮罩工具屏幕遮罩工具,遮住广告exe
总的来说,Ext3_MaskLayer是ExtJS 3.x框架中的一个重要工具,它提供了便捷的方法来创建和管理遮罩层,使得用户界面在处理异步操作时更具专业感和响应性。通过熟练掌握这个组件,开发者可以为用户提供更加流畅、友好...
在IT行业中,尤其是在软件开发和用户体验设计领域,"flex抓屏 移动盒子 遮罩 抓取选取内容"这一技术主题涉及到多个关键概念。首先,我们需要理解这些术语的含义: 1. **Flex**:这里指的是Adobe Flex,一个开源框架...
在WPF应用开发中,当用户等待数据加载时,为了提供更好的用户体验,通常会使用一个“LoadingMask”或“加载遮罩”来显示一个正在处理的提示,这能告诉用户程序正在进行后台操作,并且需要一些时间来完成。加载遮罩...
在IT行业中,网页设计与用户体验是至关重要的,而"仿百度图片遮罩"的效果就是一种提升用户交互体验的常见技术。这种效果使得用户在浏览图片时,可以通过移动鼠标来查看图片的不同部分,遮罩层会跟随鼠标移动,呈现出...
这个工具类提供了对Android图片进行遮罩处理的能力,使得开发者能够更便捷地操纵和修饰应用程序中的图像资源。 首先,我们要理解什么是遮罩。遮罩本质上是一个二值图像,其中黑色部分表示透明,白色部分表示不透明...
在本项目中,“flex弹性布局+图片遮罩层作业”主要涵盖了两个重要的前端网页开发技术:Flex布局和图片遮罩层。接下来,我们将详细探讨这两个技术,并结合项目描述,了解如何将它们应用于实际的网页设计中。 首先,...
在Qt编程中,实现遮罩窗口(mask window)是...总的来说,Qt提供了丰富的工具和接口,使得创建具有遮罩效果的窗口变得简单易行。通过理解并运用上述技术,开发者可以轻松地为自己的应用程序添加美观且实用的遮罩功能。
"多级分类右边遮罩"是一个特定的设计概念,主要涉及到网页交互和前端开发技术。 在网页设计中,遮罩层(Mask Layer)通常用于创建一种半透明覆盖效果,它覆盖在页面的部分或全部内容上,以突出显示特定区域或提供...
"C#/.Net WinForm窗口遮罩层工具实例"就是为了解决这个问题,它提供了一个可直接使用的遮罩层组件,其效果类似于网页中常见的“菊花转转”加载动画。 首先,让我们理解遮罩层(Mask Layer)的概念。遮罩层通常是一...
**JS插件BLUCK_UI遮罩工具详解** 在前端开发中,我们经常需要在页面加载或执行特定操作时,向用户展示一个半透明的遮罩层,以防止用户与页面其他部分交互,这种功能通常被称为“阻塞UI”或者“加载遮罩”。`BLUCK_...
虽然屏幕遮罩工具在保护隐私方面具有重要作用,但用户也应保持警惕,因为恶意软件可能伪装成看似无害的屏幕遮罩程序,对用户的系统安全构成威胁。为了避免这种情况,用户在使用此类工具之前,应该使用可靠的反病毒...
1.可控制遮罩绘制时候是起始和终止点是矩形还是圆形 2.可控制遮罩颜色,用户自定义 3.可控制遮罩线条粗细,1~150像素范围内 4.可控制遮罩当前是绘图还是移动图片模式 5.添加橡皮擦功能 6.release模式下,20M以内的图...
开发工具与关键技术:Adobe Dreamweaver CC 作者:黄灿 撰写时间:2019.1.16 在模仿华为官方网页的练习当中我发现华为官网中有一个遮罩层是随便点击遮罩层的背景也能关闭掉遮罩层,但唯独点击内容区域不会关闭掉遮罩...
在这个实例中,我们使用了遮罩层和被遮罩层,并应用了变形面板和橡皮工具来实现红星的闪烁效果。 FLASH 遮罩是一种强大的动画技术,可以用来实现各种有选择地显示对象的效果,在 Flash 8.0 中,可以通过遮罩层来...
Unity 实现新手引导遮罩