AS3 CookBook学习整理(九)

1. 改变色彩

新红色值 = (旧红色值 * redMultiplier) + redOffset

新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset

新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset

新Alpha值 = (旧Alpha 值 * alphaMultiplier) + alphaOffset

multiplier属性(redMultiplier, greenMultiplier, blueMultiplier, 和alphaMultiplier) 范围都在0到1,默认值为1

 {
 flash.display.Shape;
 flash.display.Sprite;
 flash.geom.ColorTransform;
  Sample0422Sprite
 {
   Sample0422()
  {
   rect:Shape = Shape();
   rect.graphics.beginFill(0xFF0000);
   rect.graphics.drawRect(100,100,150,100);
   rect.graphics.endFill();
   .addChild(rect);
   
   ct:ColorTransform = rect.transform.colorTransform;
   ct.redMultiplier = 0.2;
   ct.greenMultiplier = 1;
   ct.blueMultiplier = 1;
   rect.transform.colorTransform = ct;
    
  }
 }
}

2. Matrix的用法

构造函数是Matrix(a, b, c, d, tx, ty),默认值是Matrix(1, 0, 0, 1, 0, 0)

a -- 在x轴方向的缩放(即乘以这个数值后得到新坐标位置)

b -- 在y轴的倾斜度

c -- 在x轴的倾斜度

d -- 在y轴方向的缩放

tx -- 沿x轴的平移量

ty -- 沿y轴的平移量

计算公式:

新的X坐标 = a * X + c * Y + tx;

新的Y坐标 = b * X + d * Y + ty;

 {
 flash.display.LineScaleMode;
 flash.display.Sprite;
 flash.events.MouseEvent;
 flash.geom.Matrix;
 [SWF(width=, height=, backgroundColor=)]
  Sample0506Sprite
 {
  matrix:Matrix = Matrix(1,0,0,1,0,0);
  count:Number = 1;
   Sample0506()
  {
    
   rect1:Sprite = Sprite();
   rect1.graphics.lineStyle(1,0x000000);
   rect1.graphics.beginFill(0x0000FF);
   rect1.graphics.drawRect(0,0,100,20);
   
   rect2:Sprite = Sprite();
   rect2.graphics.lineStyle(1,0x000000);
   rect2.graphics.beginFill(0x00FF00);
   rect2.graphics.drawRect(0,10,200,20);
   
    
   rect:Sprite = Sprite();
   rect.graphics.lineStyle(1,0x000000,1,false,LineScaleMode.NONE);
   rect.graphics.beginFill(0xCCCCCC);
   rect.graphics.drawRect(0,30,100,20);   
   rect.addEventListener(MouseEvent.CLICK,onClick);
   
   bigSprite:Sprite = Sprite();
   bigSprite.addChild(rect1);
   bigSprite.addChild(rect2);
   bigSprite.addChild(rect);
   bigSprite.x = 100;
   bigSprite.y = 100;
   .addChild(bigSprite);
  }
  
   onClick(event:MouseEvent):
  {
   count = count + 1;
   sprite:Sprite = event.target    Sprite;
   matrix.a = count; 
   
    
   sprite.transform.matrix = matrix;
  }
 }
}

有几个现有的方法,能方便的实现平移、缩放及旋转

平移 -- translate(tx, ty)

缩放 -- scale(a, d)

旋转 -- rotate(q),例如旋转90度,是rotate((90/180)*Math.PI); 需要注意的是,旋转点始终在父容器的左上角

而要实现倾斜,则只能设置b和c的值,b属性表示斜角沿 y 轴的正切;c属性表示斜角沿 x 轴的正切

下面的例子演示了旋转

 {
 flash.display.LineScaleMode;
 flash.display.Sprite;
 flash.events.Event;
 flash.geom.Matrix;
 [SWF(width=, height=, backgroundColor=)]
  Sample0506Sprite
 {
  rect:Sprite;
  
   Sample0506()
  {
   rect = Sprite();
   rect.graphics.lineStyle(1,0x000000,1,false,LineScaleMode.NONE);
   rect.graphics.beginFill(0xCCCCCC);
   rect.graphics.drawRect(-50,-100,100,200);
   
   bigSprite:Sprite = Sprite();
   bigSprite.addChild(rect);
   bigSprite.x = 300;
   bigSprite.y = 300;
   bigSprite.graphics.beginFill(0xFFFF00);
   bigSprite.graphics.drawRect(0,0,200,200);
   bigSprite.graphics.endFill();  
   .addChild(bigSprite);
   
   stage.addEventListener(Event.ENTER_FRAME,onEnter);
  }
  
   onEnter(event:Event):
  {
   tmpMatrix:Matrix = rect.transform.matrix;
   tmpMatrix.rotate((30/180)*Math.PI);
   rect.transform.matrix = tmpMatrix;
  }
 }
}

3. 阴影滤镜(DropShadowFilter)

DropShadowFilter(

distance:Number = 4,

angle:Number = 45,

color:uint = 0,

alpha:Number = 1,

blurX:Number = 4,

blurY:Number = 4,

strength:Number = 1,

quality:int = 1,

inner:Boolean = false,

knockout:Boolean = false,

hideObject = false

)

参数说明:

distance -- 阴影的深度。默认为4,以像素为单位

angle -- 阴影的角度。默认为45°,范围为0°-360°

color -- 阴影的颜色。默认为0(黑色)

alpha -- 阴影颜色的Alpha值。默认为1,范围为0 - 1

blurX -- 水平模糊量。默认为4,范围为0 - 255(浮点)

blurY -- 垂直模糊量。默认为4,范围为0 - 255(浮点)

strength -- 压印的力度。值越大颜色越深,而且阴影与背景之间的对比度也越强,范围为0 - 255

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

inner -- 阴影是否为内侧阴影。值为true表明是内侧阴影,默认为false,即外侧阴影(对象外缘周围的阴影)

knockout -- 是否应用挖空效果。为true将使对象的变为透明,并显示文档的背景颜色。默认值为false(不应用挖空效果)

hideObject -- 是否隐藏对象(只显示阴影)。为true表示没有绘制对象本身,只有阴影是可见的。默认值为false(显示对象)

4. 模糊滤镜(BlurFilter)

BlurFilter(

blurX:Number = 4,

blurY:Number = 4,

quality:int = 1

)

参数说明:

blurX -- 水平模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

blurY -- 垂直模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

5. 光晕滤镜(GlowFilter)

使用GlowFilter类可以对显示对象应用发光效果。有多个用于发光样式的选项,包括内侧发光或外侧发光以及挖空模式。 在阴影滤镜的distance和 angle 属性设置为 0 时,发光滤镜与投影滤镜极为相似。

GlowFilter(

color:uint = 0xFF0000,

alpha:Number = 1,

blurX:Number = 6,

blurY:Number = 6,

strength:Number = 2,

quality:int = 1,

inner:Boolean = false,

knockout:Boolean = false

)

参数说明:

color -- 光晕的颜色,默认为0xFF0000(红色)

alpha -- 光晕颜色的Alpha值。默认为1,范围为0 - 1

blurX --水平模糊量。默认为6,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

blurY -- 垂直模糊量。默认为6,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

strength -- 压印的力度。默认为2,范围为0 - 255,值越大颜色越深,而且阴影与背景之间的对比度也越强

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值 BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

inner -- 光晕是否为内侧。值为true表明是内侧光晕,默认为false,即外侧光晕(对象外缘周围的光晕)

knockout -- 是否应用挖空效果。为true将使对象的变为透明,并显示文档的背景颜色。默认值为false(不应用挖空效果)

6. 斜角滤镜(BevelFilter)

使用BevelFilter类对显示对象添加斜角效果。斜角效果使对象(如按钮)具有三维外观

BevelFilter(

distance:Number = 4,

angle:Number = 45,

highlightColor:uint = 0xFFFFFF,

highlightAlpha:Number = 1,

shadowColor:uint = 0x000000,

shadowAlpha:Number = 1,

blurX:Number = 4,

blurY:Number = 4,

strength:Number = 1,

quality:int = 1,

type:String = "inner",

knockout:Boolean = false

)

参数说明:

distance -- 斜角的偏移距离。默认为4,以像素为单位

angle -- 斜角的角度。默认为45°,范围为0°-360°,角度值表示理论上的光源落在对象上的角度

highlightColor -- 斜角的加亮颜色。默认值为0xFFFFFF。对于一个矩形,angle为45°时,为左上角的颜色

highlightAlpha -- 加亮颜色的Alpha值。默认为1,范围为0 - 1

shadowColor -- 斜角的阴影颜色。默认值为0x000000

shadowAlpha -- 阴影颜色的Alpha值。默认为1,范围为0 - 1

blurX -- 水平模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

blurY -- 垂直模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

strength -- 压印的力度。默认为1,范围为0 - 255,值越大颜色越深,而且斜角与背景之间的对比度也越强

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

type -- 斜角在对象上的位置。有效值为BitmapFilterType 常数:

BitmapFilterType.INNER

BitmapFilterType.OUTER

BitmapFilterType.FULL

默认为INNER,只显示对象内部的阴影。如果为Outer,则只显示对象外部的阴影,如果为FULL,则同时显示内部和外部的阴影

knockout -- 是否应用挖空效果。为true将使对象的变为透明,并显示文档的背景颜色。默认值为false(不应用挖空效果)

7. 渐变光晕滤镜(GradientGlowFilter)

使用GradientGlowFilter类对显示对象应用渐变发光效果。渐变发光是一种非常逼真的发光效果

GradientGlowFilter(

distance:Number = 4,

angle:Number = 45,

colors:Array = null,

alphas:Array = null,

ratios:Array = null,

blurX:Number = 4,

blurY:Number = 4,

strength:Number = 1,

quality:int = 1,

type:String = "inner",

knockout:Boolean = false

)

distance -- 光晕的偏移距离。默认为4,以像素为单位

angle -- 角度。默认为45°,范围为0°-360°

colors -- 定义渐变的颜色数组

alphas -- 颜色数组中对应颜色的Alpha值的数组

ratios -- 颜色分布比例的数组。有效值为0 - 255

blurX -- 水平模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

blurY -- 垂直模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

strength -- 压印的力度。默认为1,范围为0 - 255,值越大颜色越深,而且发光与背景之间的对比度也越强

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

type -- 斜角在对象上的位置。有效值为BitmapFilterType 常数:

BitmapFilterType.INNER

BitmapFilterType.OUTER

BitmapFilterType.FULL

默认为INNER,只显示对象内部的阴影。如果为Outer,则只显示对象外部的阴影,如果为FULL,则同时显示内部和外部的阴影

knockout -- 是否应用挖空效果。为true将使对象的变为透明,并显示文档的背景颜色。默认值为false(不应用挖空效果)

8. 渐变斜角滤镜(GradientBevelFilter)

使用GradientGlowFilter类对显示对象应用渐变斜角效果。渐变斜角是位于对象外部、内部或顶部的使用渐变色增强的有斜面的边缘。 有斜面的边缘使对象具有三维外观

GradientBevelFilter(

distance:Number = 4,

angle:Number = 45,

colors:Array = null,

alphas:Array = null,

ratios:Array = null,

blurX:Number = 4,

blurY:Number = 4,

strength:Number = 1,

quality:int = 1,

type:String = "inner",

knockout:Boolean = false

)

distance -- 斜角的偏移距离。默认为4,以像素为单位

angle -- 角度。默认为45°,范围为0°-360°

colors -- 定义渐变的颜色数组

alphas -- 颜色数组中对应颜色的Alpha值的数组

ratios -- 颜色分布比例的数组。有效值为0 - 255

blurX -- 水平模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

blurY -- 垂直模糊量。默认为4,范围为0 - 255(浮点),2的乘方值(如2、4、8、16和32)经过优化,呈现速度比其它值更快

strength -- 压印的力度。默认为1,范围为0 - 255,值越大颜色越深,而且斜角与背景之间的对比度也越强

quality -- 应用滤镜的次数。默认值为1(BitmapFilterQuality.LOW),与应用一次滤镜等效。BitmapFilterQuality.MEDIUM 两次应用滤镜;值BitmapFilterQuality.HIGH 三次应用滤镜。 滤镜的值越小,呈现速度越快。

type -- 斜角在对象上的位置。有效值为BitmapFilterType 常数:

BitmapFilterType.INNER

BitmapFilterType.OUTER

BitmapFilterType.FULL

默认为INNER,对象内缘上的斜角。如果为Outer, 对象外缘上的斜角。如果为FULL,对象顶部的斜角

knockout -- 是否应用挖空效果。为true将使对象的变为透明,并显示文档的背景颜色。默认值为false(不应用挖空效果)

9. 使用滤镜需要注意的几点

(1) 将滤镜数组赋值给可视化对象时,赋值的是数组拷贝而不是引用

(2) 不能直接修改对象的filter属性,应该先取得滤镜数组,添加新滤镜,再重新赋值回去

 {
 flash.display.Sprite;
 flash.filters.DropShadowFilter;
 flash.filters.GlowFilter;
  Sample0508Sprite
 {
   Sample0508()
  {
   rect:Sprite = Sprite();
   rect.graphics.beginFill(0xFFFF00);
   rect.graphics.drawRect(100,100,200,150);
   rect.graphics.endFill();
   
   shadow:DropShadowFilter = DropShadowFilter();
   rect.filters = [shadow];
   
   shadow.color = 0x0000FF;    
   arr:Array = rect.filters;
   arr.push(GlowFilter());
   rect.filters = arr;
   
   .addChild(rect);
  }
 }
}

(3) 滤镜是一层一层叠加上去的,例如,有个滤镜数组有两个滤镜:阴影滤镜和光晕滤镜(光晕滤镜在第二个位置),当第一个滤镜应用后,第二个滤镜应用在原始对象和第一个滤镜之上。如果要让每个滤镜效果都只影响原始对象而不是叠加,可以建立若干个和原始对象相等大小和位置的可视化对象,将其它滤镜应用到这些对象上,然后将滤镜的knockout属性设置为true(用于隐藏原始图形)

 {
 flash.display.Sprite;
 flash.filters.DropShadowFilter;
 flash.filters.GlowFilter;
  Sample0508Sprite
 {
   Sample0508()
  {
   rect:Sprite = Sprite();
   rect.graphics.beginFill(0xFFFF00);
   rect.graphics.drawRect(100,100,200,150);
   rect.graphics.endFill();
   
   rectTemp:Sprite = Sprite();
   rectTemp.graphics.beginFill(0xFFFF00);
   rectTemp.graphics.drawRect(100,100,200,150);
   rectTemp.graphics.endFill();
   
   rect.filters = [GlowFilter()];
   rectTemp.filters = [DropShadowFilter(10, 45,0, 1, 4, 4, 1, 1, false, )];
   
   .addChild(rect);
   .addChild(rectTemp);
  }
 }
}

(4) 要清除显示对象上的滤镜效果,通过赋值一个空数组或null即可

sampleSprite.filters = [];

10. 角度与弧度的换算

角度(angle)转换为弧度(radian)

radian = angle * Math.PI / 180;

弧度(radian)转换为角度(angle)

angle = radian * 180 / Math.Pi;

 

转载于:https://www.cnblogs.com/CoderWayne/archive/2010/07/15/1778068.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的有限差分法实验报告用MATLAB中的有限差分法计算槽内电位;对比解析法和数值法的异同点;选取一点,绘制收敛曲线;总的三维电位图+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值