手机
当前位置:查字典教程网 >网页设计 >Flash教程 >Flex 实现可以拖动的毛玻璃效果
Flex 实现可以拖动的毛玻璃效果
摘要:复制代码代码如下:此场景对应的类为:复制代码代码如下://ActionScriptfileimportflash.display.Bitma...

复制代码 代码如下:

<?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

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

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

Flash AS3教程:实现鼠标跟随炫舞线条动画效果

Flash AS3制作数字落下的动画特效

Flash组件教程:组件动画效果的修改

Flash CS3打造光圈动画效果

FLASH中设置动态文本的半透明效果

教你如何在Flash中实现动态模糊效果

Flash AS 实例进阶 图片滚动效果

Flash AS3制作交互式3D旋转动画效果

Flash怎么制作扫光动画的效果?

Flash AS实现的蝌蚪摆尾动画的教程

精品推荐
分类导航