12321官方游戏论坛

 找回密码
 立即注册
查看: 2414|回复: 7

【AS3】自己开发的一个实用滤镜快速应用类

[复制链接]

55

主题

714

帖子

6327

积分

管理员

愿5DPLAY再次翱翔

Rank: 9Rank: 9Rank: 9

积分
6327
发表于 2019-4-12 21:39:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这几天在自己做游戏的时候,发现有时候总是需要给元件加滤镜,按照API的方法又要定义滤镜类型,又要数组,又要push...挺累人的,所以我就抽空写了这么一个类,来简化这些操作,下面附上源码~

注意:使用前请先导入Filters类所在的Class


共有9个静态方法,使用Filters.+相应方法即可操作;
其中前六个是设置常用滤镜的方法,后三个是关于滤镜的操作
  1. package kujiukaren.createUI{
  2.        
  3.         import flash.filters.DropShadowFilter;
  4.         import flash.filters.BlurFilter;
  5.         import flash.filters.GlowFilter;
  6.         import flash.filters.BevelFilter;
  7.         import flash.filters.GradientBevelFilter;
  8.         import flash.filters.GradientGlowFilter;
  9.         //import flash.filters.ColorMatrixFilter;
  10.        
  11.         public class Filters{
  12.                
  13.                 private static var _filters:Array=new Array();
  14.                
  15.                 //**************************************************
  16.                
  17.                 public function Filters():void{
  18.                         //设置不能被实例化
  19.                         throw new Error("Filter class is static container only");
  20.                 }
  21.                
  22.                 //**************************************************
  23.                
  24.                 //设置投影滤镜
  25.                 public static function setDropShadow(mc:*,distance:Number=4.0,angle:Number=45,color:uint=0,alpha:Number=1.0,blurX:Number=4.0,blurY:Number=4.0,strength:Number=1.0,quality:int=1,inner:Boolean=false,knockout:Boolean=false,hideObject:Boolean=false):void{
  26.                         //阴影的偏移距离,以像素为单位|阴影的角度|阴影的颜色|阴影颜色的 Alpha 透明度值|水平模糊量|垂直模糊量|印记或跨页的强度|应用滤镜的次数|表示阴影是否为内侧阴影|应用挖空效果 (true),这将有效地使对象的填色变为透明,并显示文档的背景颜色|表示是否隐藏对象
  27.                         var drop:DropShadowFilter=new DropShadowFilter(distance,angle,color,alpha,blurX,blurY,strength,quality,inner,knockout,hideObject);
  28.                         _filters.push(drop);
  29.                        
  30.                         mc.filters=_filters;
  31.                 }
  32.                
  33.                 //设置模糊滤镜
  34.                 public static function setBlur(mc:*,blurX:Number=4.0,blurY:Number=4.0,quality:int=1):void{
  35.                         //水平模糊量|垂直模糊量|执行模糊的次数
  36.                         var blur:BlurFilter=new BlurFilter(blurX,blurY,quality);
  37.                         _filters.push(blur);
  38.                        
  39.                         mc.filters=_filters;
  40.                 }
  41.                
  42.                 //设置发光滤镜
  43.                 public static function setGlow(mc:*,color:uint=0xFF0000,alpha:Number=1.0,blurX:Number=6.0,blurY:Number=6.0,strength:Number=2,quality:int=1,inner:Boolean=false,knockout:Boolean=false):void{
  44.                         //光晕颜色|颜色的 Alpha 透明度值|水平模糊量|垂直模糊量|印记或跨页的强度|应用滤镜的次数|指定发光是否为内侧发光|指定对象是否具有挖空效果
  45.                         var glow:GlowFilter=new GlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);
  46.                         _filters.push(glow);
  47.                        
  48.                         mc.filters=_filters;
  49.                 }
  50.                
  51.                 //设置斜角滤镜
  52.                 public static function setBevel(mc:*,distance:Number=4.0,angle:Number=45,highlightColor:uint=0xFFFFFF,highlightAlpha:Number=1.0,shadowColor:uint=0x000000,shadowAlpha:Number=1.0,blurX:Number=4.0,blurY:Number=4.0,strength:Number=1,quality:int=1,type:String="inner",knockout:Boolean=false):void{
  53.                         //斜角的偏移距离|斜角的角度|斜角的加亮颜色|加亮颜色的 Alpha 透明度值|斜角的阴影颜色|阴影颜色的 Alpha 透明度值|水平模糊量,以像素为单位|垂直模糊量,以像素为单位|印记或跨页的强度|应用滤镜的次数|斜角在对象上的位置|应用挖空效果 (true),这将有效地使对象的填色变为透明,并显示文档的背景颜色
  54.                         var bevel:BevelFilter=new BevelFilter(distance,angle,highlightColor,highlightAlpha,shadowColor,shadowAlpha,blurX,blurY,strength,quality,type,knockout);
  55.                         _filters.push(bevel);
  56.                        
  57.                         mc.filters=_filters;
  58.                 }
  59.                
  60.                 //设置渐变斜角滤镜
  61.                 public static function setGradientBevel(mc:*,distance:Number=4.0,angle:Number=45,colors:Array=null,alphas:Array=null,ratios:Array=null,blurX:Number=4.0,blurY:Number=4.0,strength:Number=1,quality:int=1,type:String="inner",knockout:Boolean=false):void{
  62.                         //偏移距离|角度,以度为单位|渐变中使用的 RGB 十六进制颜色值数组|colors 数组中对应颜色的 Alpha 透明度值的数组|对应于 colors 数组中颜色的一组颜色分布比率|水平模糊量,以像素为单位|垂直模糊量,以像素为单位|印记或跨页的强度|应用滤镜的次数|斜角效果的放置|指定对象是否具有挖空效果
  63.                         var gradientBevel:GradientBevelFilter=new GradientBevelFilter(distance,angle,colors,alphas,ratios,blurX,blurY,strength,quality,type,knockout);
  64.                         _filters.push(gradientBevel);
  65.                        
  66.                         mc.filters=_filters;
  67.                 }
  68.                
  69.                 //设置渐变发光滤镜
  70.                 public static function setGradientGlow(mc:*,distance:Number=4.0,angle:Number=45,colors:Array=null,alphas:Array=null,ratios:Array=null,blurX:Number=4.0,blurY:Number=4.0,strength:Number=1,quality:int=1,type:String="inner",knockout:Boolean=false):void{
  71.                         //光晕的偏移距离|角度,以度为单位|定义渐变的颜色数组|colors 数组中对应颜色的 Alpha 透明度值的数组|对应于 colors 数组中颜色的一组颜色分布比率|水平模糊量,以像素为单位|垂直模糊量,以像素为单位|印记或跨页的强度|应用滤镜的次数|斜角在对象上的位置|应用挖空效果 (true),这将有效地使对象的填色变为透明,并显示文档的背景颜色
  72.                         var gradientGlow:GradientGlowFilter=new GradientGlowFilter(distance,angle,colors,alphas,ratios,blurX,blurY,strength,quality,type,knockout);
  73.                         _filters.push(gradientGlow);
  74.                        
  75.                         mc.filters=_filters;
  76.                 }
  77.                
  78.                 /*
  79.                 //设置调整颜色滤镜
  80.                 public static function setColorMatrix(mc:*,):void{
  81.                         var colormatrix:ColorMatrixFilter=new ColorMatrixFilter();
  82.                 }*/
  83.                
  84.                 //清理缓存的滤镜信息
  85.                 public static function cleanAllFilters():void{
  86.                         _filters=[];
  87.                 }
  88.                
  89.                 //删除指定mc的所有滤镜
  90.                 public static function deleteAllFilters(mc:*):void{
  91.                         mc.filters=null;
  92.                 }
  93.                
  94.                 //获取指定mc的全部滤镜属性
  95.                 public static function getFilters(mc:*):Array{
  96.                         //trace("filters:"+mc.filters);
  97.                         return mc.filters;
  98.                 }
  99.         }
  100. }
复制代码
使用示例:
  1. package{
  2.        
  3.         import flash.display.MovieClip;
  4.         import flash.text.TextField;
  5.         import flash.text.TextFieldAutoSize;
  6.         import flash.text.TextFormat;
  7.        
  8.         import kujiukaren.createUI.Filters;
  9.        
  10.         public class SampleMain extends MovieClip {
  11.                
  12.                 private var _titleText:TextField;
  13.                 private var _titleText_2:TextField;
  14.                 private var _titleText_3:TextField;
  15.                
  16.                 public function SampleMain() {
  17.                         _titleText=new TextField();
  18.                         _titleText.text="什么都不加";
  19.                         _titleText.autoSize=TextFieldAutoSize.LEFT;
  20.                         _titleText.x=150;
  21.                         _titleText.y=50;
  22.                        
  23.                         _titleText_2=new TextField();
  24.                         _titleText_2.text="设置了阴影滤镜";
  25.                         _titleText_2.autoSize=TextFieldAutoSize.LEFT;
  26.                         _titleText_2.x=150;
  27.                         _titleText_2.y=100;
  28.                        
  29.                         _titleText_3=new TextField();
  30.                         _titleText_3.text="设置了阴影+发光滤镜";
  31.                         _titleText_3.autoSize=TextFieldAutoSize.LEFT;
  32.                         _titleText_3.x=150;
  33.                         _titleText_3.y=150;
  34.                        
  35.                         setTextStyle(_titleText,24,true,0xffffff);
  36.                         setTextStyle(_titleText_2,24,true,0xffffff);
  37.                         setTextStyle(_titleText_3,24,true,0xffffff);
  38.                        
  39.                         Filters.cleanAllFilters();
  40.                         Filters.setDropShadow(_titleText_2,5.0,45,0x000000,1.0,5.0,5.0,1.0,3,false,false,false);
  41.                        
  42.                         Filters.cleanAllFilters();
  43.                         Filters.setDropShadow(_titleText_3,5.0,45,0x000000,1.0,5.0,5.0,1.0,3,false,false,false);
  44.                         Filters.setGlow(_titleText_3,0xff3300,1.0,5.0,5.0,1,3,false,false);
  45.                        
  46.                         addChild(_titleText);
  47.                         addChild(_titleText_2);
  48.                         addChild(_titleText_3);
  49.                 }
  50.                
  51.                 private function setTextStyle(txtField:TextField,size:int=12,bold:Boolean=false,color:uint=0xffffff):void{
  52.                         var fontStyle:TextFormat=new TextFormat();
  53.                         fontStyle.font="Microsoft YaHei";
  54.                         fontStyle.size=size;
  55.                         fontStyle.bold=bold;
  56.                         fontStyle.color=color;
  57.                        
  58.                         txtField.setTextFormat(fontStyle);
  59.                 }
  60.         }
  61.        
  62. }
复制代码
效果:

きんいろモザイク
回复

使用道具 举报

41

主题

572

帖子

2056

积分

金牌会员

划水ing

Rank: 6Rank: 6

积分
2056
发表于 2019-4-12 22:37:36 | 显示全部楼层
渺渺牛p!
不要去触碰那遥不可及的梦
回复

使用道具 举报

61

主题

2万

帖子

3万

积分

管理员

野心家

Rank: 9Rank: 9Rank: 9

积分
38159
QQ
发表于 2019-4-12 22:47:42 | 显示全部楼层
三楼来顶一下
既然无法一起出生,  那就一起祸害苍生。
回复

使用道具 举报

0

主题

40

帖子

125

积分

注册会员

Rank: 2

积分
125
发表于 2019-4-13 18:08:56 | 显示全部楼层
看不懂,但是很牛逼
回复

使用道具 举报

0

主题

13

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2019-4-15 10:59:33 来自手机 | 显示全部楼层
不是一般人看得懂啊
回复

使用道具 举报

19

主题

172

帖子

317

积分

中级会员

Rank: 3Rank: 3

积分
317
发表于 2019-5-15 21:50:38 | 显示全部楼层
看不懂……………………
回复

使用道具 举报

20

主题

7181

帖子

1万

积分

论坛元老

Meruri

Rank: 8Rank: 8

积分
14495
QQ
发表于 2021-2-18 10:18:16 | 显示全部楼层
关于我完全看不懂此帖这件事
回复

使用道具 举报

0

主题

24

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2021-6-14 14:09:44 | 显示全部楼层
666666666666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|12321官方游戏论坛  

GMT+8, 2024-3-29 13:19 , Processed in 0.029980 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表