[AS3]DisplayEffect组件
【组件版本】:0.5
【功能简述】:可对DisplayObject显示类进行模糊,锐化,浮雕,色调,亮度,对比度等特效处理。
【运行平台】:Flash CS3,ActionScript3,Flash Player 9 +
【功能演示】:
演示程序会自动测试你是否有摄像头,如果有就调用摄像头,如果没有就调用一个swf动画文件
[AS3]DisplayEffect组件
【组件版本】:0.5
【功能简述】:可对DisplayObject显示类进行模糊,锐化,浮雕,色调,亮度,对比度等特效处理。
【运行平台】:Flash CS3,ActionScript3,Flash Player 9 +
【功能演示】:
演示程序会自动测试你是否有摄像头,如果有就调用摄像头,如果没有就调用一个swf动画文件。
<script src="/media/swfobject.js" type="text/javascript"></script> <script type="text/javascript"></script>
【调用接口】:
- public interface com.klstudio.images.DisplayEffect {
- //清除特效;
- function clear():void;
- //高斯模糊(uint);
- function blur(blurX:uint=4,blurY:uint=4):void;
- //浮雕([B,BL,BR,L,R,T,TL,TR],String);
- function emboss(direction:String = null):void;
- //锐化([1~3],uint)
- function sharpen(quality:uint=3):void;
- //色调([0x000000 ~ 0xFFFFFF],uint)
- function color(color:uint):void;
- //亮度([-255~255],int)
- function brightness(offset:int):void;
- //灰度
- function grayscale():void;
- //饱和度([0~3],Number)
- function saturation(strength:Number):void;
- //对比度([0~1],Number)
- function contrast(strength:Number):void;
- //反相
- function invert():void;
- }
public interface com.klstudio.images.DisplayEffect { //清除特效; function clear():void; //高斯模糊(uint); function blur(blurX:uint=4,blurY:uint=4):void; //浮雕([B,BL,BR,L,R,T,TL,TR],String); function emboss(direction:String = null):void; //锐化([1~3],uint) function sharpen(quality:uint=3):void; //色调([0x000000 ~ 0xFFFFFF],uint) function color(color:uint):void; //亮度([-255~255],int) function brightness(offset:int):void; //灰度 function grayscale():void; //饱和度([0~3],Number) function saturation(strength:Number):void; //对比度([0~1],Number) function contrast(strength:Number):void; //反相 function invert():void; }
【实例调用】:
- package project.test {
- import fl.controls.ComboBox;
- import flash.filters.*;
- import flash.net.*;
- import flash.utils.*;
- import flash.display.*;
- import flash.events.*;
- import flash.media.Camera;
- import flash.media.Video;
- import flash.text.*;
- import com.klstudio.images.DisplayEffect;
- public class Test8 extends Sprite{
- private var _src:DisplayObject;
- private var _new:DisplayObject;
- private var _df:DisplayEffect;
- private var _hasCam:Boolean;
- private var effect_cb:ComboBox;
- public function Test8(){
- graphics.lineStyle(1,0x999999);
- graphics.beginFill(0xCCCCCC);
- graphics.drawRect(5,5,320,240);
- graphics.drawRect(330,5,320,240);
- var cam:Camera = Camera.getCamera();
- if(cam == null){
- initLoader();
- }else{
- initVideo(cam);
- }
- effect_cb = new ComboBox();
- effect_cb.move(5,250);
- effect_cb.addItem({label:"浮雕",data:"emboss"});
- effect_cb.addItem({label:"高斯模糊",data:"blur"});
- effect_cb.addItem({label:"锐化",data:"sharpen"});
- effect_cb.addItem({label:"色调",data:"color"});
- effect_cb.addItem({label:"亮度",data:"brightness"});
- effect_cb.addItem({label:"对比度",data:"contrast"});
- effect_cb.addItem({label:"饱和度",data:"saturation"});
- effect_cb.addItem({label:"灰度",data:"grayscale"});
- effect_cb.addItem({label:"反相",data:"invert"});
- effect_cb.addEventListener(Event.CHANGE,changeEffectHandler);
- addChild(effect_cb);
- var id:uint = getRndNumber(0,effect_cb.length);
- effect_cb.selectedIndex = id;
- switch(id){
- case 0:
- _df.emboss();
- break;
- case 1:
- _df.blur(15,15);
- break;
- case 2:
- _df.sharpen();
- break;
- case 3:
- _df.color(0x0000FF);
- break;
- case 4:
- _df.brightness(100);
- break;
- case 5:
- _df.contrast(0.7);
- break;
- case 6:
- _df.saturation(2.5);
- break;
- case 7:
- _df.grayscale();
- break;
- case 8:
- _df.invert();
- break;
- }
- //copyright;
- var copyright:TextField = new TextField();
- copyright.autoSize = TextFieldAutoSize.LEFT;
- copyright.selectable = false;
- copyright.defaultTextFormat = new TextFormat("Verdana",9,0xFFFFFF,true,null,null,"http://www.klstudio.com","_blank");
- copyright.text = "POWERED BY KINGLONG";
- copyright.x = 655 - copyright.width - 5;
- copyright.y = 280 - copyright.height - 5;
- var filter:BitmapFilter = getBitmapFilter();
- copyright.filters = [filter];
- copyright.alpha = 0.8;
- addChild(copyright);
- }
- private function changeEffectHandler(event:Event):void{
- _df.clear();
- switch(event.target.value){
- case "emboss":
- _df.emboss();
- break;
- case "blur":
- _df.blur(10);
- break;
- case "sharpen":
- _df.sharpen();
- break;
- case "color":
- _df.color(0x0000FF);
- break;
- case "brightness":
- _df.brightness(100);
- break;
- case "contrast":
- _df.contrast(0.7);
- break;
- case "saturation":
- _df.saturation(2.5);
- break;
- case "grayscale":
- _df.grayscale();
- break;
- case "invert":
- _df.invert();
- break;
- }
- }
- private function initVideo(cam:Camera):void{
- _src = new Video();
- _src.x = 5;
- _src.y = 5;
- addChild(_src);
- _new = new Video();
- _new.x = 330;
- _new.y = 5;
- addChild(_new);
- cam.setMode(320,240,24);
- cam.setQuality(10*1024*1024,100);
- var video:Video = _src as Video;
- video.attachCamera(cam);
- video = _new as Video;
- video.attachCamera(cam);
- _df = new DisplayEffect(_new);
- }
- private function initLoader():void{
- _src = new Loader();
- _src.x = 5;
- _src.y = 5;
- addChild(_src);
- _new = new Loader();
- _new.x = 330;
- _new.y = 5;
- addChild(_new);
- var loader:Loader = _src as Loader;
- loader.load(new URLRequest("/demo/test/anima.swf"));
- loader = _new as Loader;
- loader.load(new URLRequest("/demo/test/anima.swf"));
- _df = new DisplayEffect(_new);
- }
- private function getBitmapFilter():BitmapFilter {
- var color:Number = 0x000000;
- var alpha:Number = 0.8;
- var blurX:Number = 2;
- var blurY:Number = 2;
- var strength:Number = 6;
- var inner:Boolean = false;
- var knockout:Boolean = false;
- var quality:Number = BitmapFilterQuality.HIGH;
- return new GlowFilter(color,
- alpha,
- blurX,
- blurY,
- strength,
- quality,
- inner,
- knockout);
- }
- private function getRndNumber(min:uint,max:uint):uint{
- return int(Math.random() * (max+1))+min;
- }
- }
- }