📄 tweenfilterlite.as
字号:
} else if (!isNaN(fv.color)) { //Just in case they define "color" instead of "colorize"
_endMatrix = colorize(_endMatrix, fv.color, fv.amount);
}
}
for (i = 0; i < _endMatrix.length; i++) {
if (_matrix[i] != _endMatrix[i] && _matrix[i] != undefined) {
this.tweens["tfl_mtx" + i] = {o:_matrix, p:i.toString(), s:_matrix[i], c:_endMatrix[i] - _matrix[i]};
}
}
}
if (this.vars.dropShadowFilter != undefined) {
fv = this.vars.dropShadowFilter;
addFilter("dropShadow", fv, DropShadowFilter, ["alpha", "angle", "blurX", "blurY", "color", "distance", "quality", "strength", "inner", "knockout", "hideObject"], new DropShadowFilter(0, 45, 0x000000, 0, 0, 0, 1, fv.quality || 2, fv.inner, fv.knockout, fv.hideObject));
}
if (this.vars.bevelFilter != undefined) {
fv = this.vars.bevelFilter;
addFilter("bevel", fv, BevelFilter, ["angle", "blurX", "blurY", "distance", "highlightAlpha", "highlightColor", "quality", "shadowAlpha", "shadowColor", "strength"], new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0x000000, 0.5, 2, 2, 0, fv.quality || 2));
}
if (this.vars.runBackwards == true) {
var tp:Object;
for (i = 0; i < _clrsa.length; i++) {
tp = _clrsa[i];
tp.sr += tp.cr;
tp.cr *= -1;
tp.sg += tp.cg;
tp.cg *= -1;
tp.sb += tp.cb;
tp.cb *= -1;
tp.f[tp.p] = (tp.sr << 16 | tp.sg << 8 | tp.sb); //Translates RGB to HEX
}
}
super.initTweenVals(true, $reservedProps);
} else {
super.initTweenVals($hrp, $reservedProps);
}
}
private function addFilter($name:String, $fv:Object, $filterType:Class, $props:Array, $defaultFilter:BitmapFilter):Object {
var f:Object = {type:$filterType};
var fltrs:Array = this.target.filters;
var i:int;
for (i = 0; i < fltrs.length; i++) {
if (fltrs[i] is $filterType) {
f.filter = fltrs[i];
break;
}
}
if (f.filter == undefined) {
f.filter = $defaultFilter;
fltrs.push(f.filter);
this.target.filters = fltrs;
}
var prop:String, valChange:Number, begin:Object, end:Object;
for (i = 0; i < $props.length; i++) {
prop = $props[i];
if ($fv[prop] != undefined) {
if (prop == "color" || prop == "highlightColor" || prop == "shadowColor") {
begin = HEXtoRGB(f.filter[prop]);
end = HEXtoRGB($fv[prop]);
_clrsa.push({f:f.filter, p:prop, sr:begin.rb, cr:end.rb - begin.rb, sg:begin.gb, cg:end.gb - begin.gb, sb:begin.bb, cb:end.bb - begin.bb});
} else if (prop == "quality" || prop == "inner" || prop == "knockout" || prop == "hideObject") {
f.filter[prop] = $fv[prop];
} else {
if (typeof($fv[prop]) == "number") {
valChange = $fv[prop] - f.filter[prop];
} else {
valChange = Number($fv[prop]);
}
this.tweens["tfl_" + $name + i] = {o:f.filter, p:prop, s:f.filter[prop], c:valChange};
}
}
}
_filters.push(f);
_hf = true;
return f;
}
override public function render($t:uint):void {
var time:Number = ($t - this.startTime) / 1000;
if (time > this.duration) {
time = this.duration;
}
var factor:Number = this.vars.ease(time, 0, 1, this.duration);
var tp:Object, i:int;
for (var p:String in this.tweens) {
tp = this.tweens[p];
tp.o[tp.p] = tp.s + (factor * tp.c);
}
if (_hf) { //has filters
var r:Number, g:Number, b:Number, j:int;
for (i = 0; i < _clrsa.length; i++) {
tp = _clrsa[i];
r = tp.sr + (factor * tp.cr);
g = tp.sg + (factor * tp.cg);
b = tp.sb + (factor * tp.cb);
tp.f[tp.p] = (r << 16 | g << 8 | b); //Translates RGB to HEX
}
if (_cmf != null) {
ColorMatrixFilter(_cmf).matrix = _matrix;
}
var f:Array = this.target.filters;
for (i = 0; i < _filters.length; i++) {
for (j = f.length - 1; j > -1; j--) {
if (f[j] is _filters[i].type) {
f.splice(j, 1, _filters[i].filter);
break;
}
}
}
this.target.filters = f;
}
if (_hst) { //has sub-tweens
for (i = 0; i < _subTweens.length; i++) {
_subTweens[i].proxy(_subTweens[i]);
}
}
if (this.vars.onUpdate != null) {
this.vars.onUpdate.apply(this.vars.onUpdateScope, this.vars.onUpdateParams);
}
if (time == this.duration) { //Check to see if we're done
super.complete(true);
}
}
public function HEXtoRGB($n:Number):Object {
return {rb:$n >> 16, gb:($n >> 8) & 0xff, bb:$n & 0xff};
}
//---- COLOR MATRIX FILTER FUNCTIONS -----------------------------------------------------------------------------------------------------------------------
public static function colorize($m:Array, $color:Number, $amount:Number = 100):Array { //You can use
if (isNaN($color)) {
return $m;
} else if (isNaN($amount)) {
$amount = 1;
}
var r:Number = (($color >> 16) & 0xff) / 255;
var g:Number = (($color >> 8) & 0xff) / 255;
var b:Number = ($color & 0xff) / 255;
var inv:Number = 1 - $amount;
var temp:Array = [inv + $amount * r * _lumR, $amount * r * _lumG, $amount * r * _lumB, 0, 0,
$amount * g * _lumR, inv + $amount * g * _lumG, $amount * g * _lumB, 0, 0,
$amount * b * _lumR, $amount * b * _lumG, inv + $amount * b * _lumB, 0, 0,
0, 0, 0, 1, 0];
return applyMatrix(temp, $m);
}
public static function setThreshold($m:Array, $n:Number):Array {
if (isNaN($n)) {
return $m;
}
var temp:Array = [_lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * $n,
_lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * $n,
_lumR * 256, _lumG * 256, _lumB * 256, 0, -256 * $n,
0, 0, 0, 1, 0];
return applyMatrix(temp, $m);
}
public static function setHue($m:Array, $n:Number):Array {
if (isNaN($n)) {
return $m;
}
$n *= Math.PI / 180;
var c:Number = Math.cos($n);
var s:Number = Math.sin($n);
var temp:Array = [(_lumR + (c * (1 - _lumR))) + (s * (-_lumR)), (_lumG + (c * (-_lumG))) + (s * (-_lumG)), (_lumB + (c * (-_lumB))) + (s * (1 - _lumB)), 0, 0, (_lumR + (c * (-_lumR))) + (s * 0.143), (_lumG + (c * (1 - _lumG))) + (s * 0.14), (_lumB + (c * (-_lumB))) + (s * -0.283), 0, 0, (_lumR + (c * (-_lumR))) + (s * (-(1 - _lumR))), (_lumG + (c * (-_lumG))) + (s * _lumG), (_lumB + (c * (1 - _lumB))) + (s * _lumB), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return applyMatrix(temp, $m);
}
public static function setBrightness($m:Array, $n:Number):Array {
if (isNaN($n)) {
return $m;
}
$n = ($n * 100) - 100;
return applyMatrix([1,0,0,0,$n,
0,1,0,0,$n,
0,0,1,0,$n,
0,0,0,1,0,
0,0,0,0,1], $m);
}
public static function setSaturation($m:Array, $n:Number):Array {
if (isNaN($n)) {
return $m;
}
var inv:Number = 1 - $n;
var r:Number = inv * _lumR;
var g:Number = inv * _lumG;
var b:Number = inv * _lumB;
var temp:Array = [r + $n, g , b , 0, 0,
r , g + $n, b , 0, 0,
r , g , b + $n, 0, 0,
0 , 0 , 0 , 1, 0];
return applyMatrix(temp, $m);
}
public static function setContrast($m:Array, $n:Number):Array {
if (isNaN($n)) {
return $m;
}
$n += 0.01;
var temp:Array = [$n,0,0,0,128 * (1 - $n),
0,$n,0,0,128 * (1 - $n),
0,0,$n,0,128 * (1 - $n),
0,0,0,1,0];
return applyMatrix(temp, $m);
}
public static function applyMatrix($m:Array, $m2:Array):Array {
if (!($m is Array) || !($m2 is Array)) {
return $m2;
}
var temp:Array = [];
var i:int = 0;
var z:int = 0;
var y:int, x:int;
for (y = 0; y < 4; y++) {
for (x = 0; x < 5; x++) {
if (x == 4) {
z = $m[i + 4];
} else {
z = 0;
}
temp[i + x] = $m[i] * $m2[x] +
$m[i+1] * $m2[x + 5] +
$m[i+2] * $m2[x + 10] +
$m[i+3] * $m2[x + 15] +
z;
}
i += 5;
}
return temp;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -