Flex 实现可以拖动的毛玻璃效果_Flex

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" clipContent="true" verticalScrollPolicy="off" horizontalScrollPolicy="off"
width="100%" height="100%" horizontalAlign="center" verticalAlign="middle" backgroundColor="#FFFFFF"
creationComplete="onCreationComplete(event)" mouseUp="onMouseUp(event)" mouseMove="onMouseMove(event)">
<mx:Script source="FrostedGlass.as"/>
<mx:Container id="ctlContainer" x="0" y="0" width="100%" height="100%"
clipContent="true" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Image horizontalAlign="center" id="ctlImage" x="0" y="0" width="1024" height="768" maintainAspectRatio="true"
source="@Embed(source='images/bg.jpg')"
/>
</mx:Container>
<mx:Box borderStyle="solid" borderThickness="1"
borderColor="#000000" render="onBoxRender(event)"
x="200" y="200" height="200" width="400" id="ctlBox"
filters="{[new DropShadowFilter(5, 45, 0x000000,0.5)]}"
mouseDown="onMouseDown(event)" />
</mx:Application>

此场景对应的类为:

复制代码 代码如下:

// ActionScript file
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
private var m_mouseDown : Boolean = false;
private var m_offsetPt : Point;
private function onCreationComplete(evt:Event) : void
{
onBoxRender(null);
}
private function onBoxRender(evt:Event) : void
{
if( ctlContainer.width > 0 && ctlContainer.height > 0 )
{
var bmpData : BitmapData = new BitmapData( ctlContainer.width, ctlContainer.height, false);
var matrix : Matrix = new Matrix();

// 对矩阵进行平移变换
matrix.translate( -1 * ctlBox.x, -1 * ctlBox.y);

// 将背景填充到移动元件上来
bmpData.draw( ctlContainer
, matrix
, null
, null
, new Rectangle( 0, 0, ctlBox.width + 4, ctlBox.height + 4) // 裁剪区域
);
bmpData.applyFilter( bmpData
, new Rectangle( 0, 0, bmpData.width, bmpData.height)
, new Point( 0, 0)
, new BlurFilter( 5, 5, 5) // BlurFilter的参数越大计算量越大 移动的时候越卡
);
ctlBox.graphics.beginBitmapFill(bmpData, null, false, false);
ctlBox.graphics.drawRect( 0, 0, ctlBox.width, ctlBox.height);
ctlBox.graphics.endFill();
}
}
private function onMouseDown(evt:MouseEvent) : void
{
m_mouseDown = true;
m_offsetPt = new Point( ctlBox.mouseX, ctlBox.mouseY);
}
private function onMouseUp(evt:MouseEvent) : void
{
m_mouseDown = false;
evt.updateAfterEvent();
}
private function onMouseMove(evt:MouseEvent) : void
{
if( m_mouseDown )
{
ctlBox.x = evt.stageX - m_offsetPt.x;
ctlBox.y = evt.stageY - m_offsetPt.y;
evt.updateAfterEvent();
}
}
// ActionScript file
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
private var m_mouseDown : Boolean = false;
private var m_offsetPt : Point;
private function onCreationComplete(evt:Event) : void
{
    onBoxRender(null);
}
private function onBoxRender(evt:Event) : void
{
    if( ctlContainer.width > 0 && ctlContainer.height > 0 )
    {
        var bmpData : BitmapData = new BitmapData( ctlContainer.width, ctlContainer.height, false);
        var matrix : Matrix = new Matrix();

        // 对矩阵进行平移变换
        matrix.translate( -1 * ctlBox.x, -1 * ctlBox.y);

        // 将背景填充到移动元件上来
        bmpData.draw( ctlContainer
        , matrix
        , null
        , null
        , new Rectangle( 0, 0, ctlBox.width + 4, ctlBox.height + 4) // 裁剪区域
        );
        bmpData.applyFilter( bmpData
            , new Rectangle( 0, 0, bmpData.width, bmpData.height)
            , new Point( 0, 0)
            , new BlurFilter( 5, 5, 5) // BlurFilter的参数越大计算量越大 移动的时候越卡
            );
        ctlBox.graphics.beginBitmapFill(bmpData, null, false, false);
        ctlBox.graphics.drawRect( 0, 0, ctlBox.width, ctlBox.height);
        ctlBox.graphics.endFill();
    }
}
private function onMouseDown(evt:MouseEvent) : void
{
    m_mouseDown = true;
    m_offsetPt = new Point( ctlBox.mouseX, ctlBox.mouseY);
}
private function onMouseUp(evt:MouseEvent) : void
{
    m_mouseDown = false;
    evt.updateAfterEvent();
}
private function onMouseMove(evt:MouseEvent) : void
{
    if( m_mouseDown )
    {
        ctlBox.x = evt.stageX - m_offsetPt.x;
        ctlBox.y = evt.stageY - m_offsetPt.y;
        evt.updateAfterEvent();
    }
}

对于Flex/Silverlight开发者来说很不方便。只能用第三方站点才能放Flash/Silverlight

时间: 2024-10-22 01:43:22

Flex 实现可以拖动的毛玻璃效果_Flex的相关文章

IOS8的新特性:简洁易用的毛玻璃效果

探寻IOS8的新亮点:毛玻璃效果的简易实现 IOS8之前,apple官方并不建议开发者使用类似毛玻璃的模糊效果,也并没有开放相关的接口,大部分的开发者是通过转化CGImage这个类来实现毛玻璃的模糊效果,并且实现的效果也很优秀.在IOS8之后,苹果官方新出了一个类UIVisualEffectView,通过这个类,实现毛玻璃效果变得轻而易举,而且效率非常之高,下面,我们来介绍下这个类的简单用法. 一.了解几个类 1.UIVisualEffectView 这个类为我们提供了一个方便的接口,用来展示复

IOS毛玻璃效果

最近实习公司的ios项目中需要用到毛玻璃的效果(如下图效果) 尝试用了几个方法都不太满意,最后终于找到了一个比较好的解决方案. 在IOS8以上的机器中,我们可以利IOS SDK中已经提供了的UIBlurEffect和UIVisualView实现简单毛玻璃的效果.实现的方法如下: UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"originalImage.jpg"]]; [s

Fireworks制作Vista毛玻璃效果

今天用Fireworks制作类似vista毛玻璃的效果,局部效果图: 1.建立画布,导入背景素材 2.绘制圆角矩形,垂直线性渐变填充 3.绘制矩形高光部分,复制矩形,原位粘贴,并删除下半部分,进行垂直线性渐变,调整透明度 4.开始制作毛玻璃效果,线性渐变绘制一个圆形,羽化10px 5.添加杂点8px 6.选择先前绘制矩形,在刚才画的圆形上点击反键-编辑-粘贴为蒙版 7.得到如下效果 8.同上步骤再绘制一个矩形.放射性填充.羽化及添加杂点步骤 9.在msn小人这块区域绘制一个椭圆行,使用绸缎填充,

用C++品尝Vista美味:界面的毛玻璃效果

简介 本文将演示在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用C++来生成Aero毛玻璃效果,此处使用的是Beta 2版本的Vista及Windows SDK,也许在后续的版本中,一些API在细节上会有所变化.另外,文中没有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下载得到,虽然此处使用的是Visual C++ 2003,但Visual C++ 2005也类似. Aero主题及毛玻璃效果,是随同Vi

如何在Fireworks制作Vista毛玻璃效果技巧

  局部效果图: 1.建立画布,导入背景素材 2.绘制圆角矩形,垂直线性渐变填充 3.绘制矩形高光部分,复制矩形,原位粘贴,并删除下半部分,进行垂直线性渐变,调整透明度 4.开始制作毛玻璃效果,线性渐变绘制一个圆形,羽化10px 5.添加杂点8px 6.选择先前绘制矩形,在刚才画的圆形上点击反键-编辑-粘贴为蒙版 7.得到如下效果 8.同上步骤再绘制一个矩形.放射性填充.羽化及添加杂点步骤 9.在msn小人这块区域绘制一个椭圆行,使用绸缎填充,按如上步骤得到下图效果. 10.得到效果. 11.最

手机web端(或微信端),实现仿淘宝的“继续拖动查看详情”效果

问题描述 手机web端(或微信端),实现仿淘宝的"继续拖动查看详情"效果 手机web端(或微信端),实现仿淘宝的"继续拖动查看详情"效果(注意不是app端的,js如何实现) 解决方案 http://download.csdn.net/detail/u013338165/8932515

用js或css实现高斯模糊(毛玻璃效果)

问题描述 用js或css实现高斯模糊(毛玻璃效果) 想用js或css实现图片的高斯模糊(毛玻璃效果),兼容性好的. 解决方案 .blur { -webkit-filter: blur(10px); /* Chrome, Opera */ -moz-filter: blur(10px); -ms-filter: blur(10px); filter: blur(10px); filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10,

ios-iOS 关于导航栏设定背景色 实现毛玻璃效果

问题描述 iOS 关于导航栏设定背景色 实现毛玻璃效果 页面是带head滑动广告栏的tablview,使用了系统的导航栏,想要实现导航栏部分背景颜色实现毛玻璃半透明效果 ,还有随tableview滑动的颜色渐变效果,试了好多方法,包括Blur都没达到效果,在考虑自定义.请问对于系统的有什么好的解决方案没? 解决方案 系统的导航栏,需要设置 translucent = YES 另外只有iPad mini,iPhone5,(ipad的好像是air开始),及以后的设备才支持毛玻璃效果 如果是以前的,只

WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放、播放、暂停、可拖动播放进度效果实现

原文:WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放.播放.暂停.可拖动播放进度效果实现         去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上