PDA

View Full Version : shorten if 'filters' as



patrickjv
April 8th, 2008, 01:42 AM
I have code prepared for filter use,
var blur:BlurFilter = new BlurFilter(); and so on.

I have 3 (blur,shadow,bevel) and 3 booleans to check wether or not to apply either or more of them.

Now I noticed that if I assign e.g. letter.filters = [blur] and in a next AS line also letter.filters = [bevel] then the 'blur' is removed/replaced. So I made a splitter if sequence as follows


// -----------
if(myParent.dofilterblur){
if(myParent.dofiltershadow){
if(myParent.dofilterbevel){
letter.filters = [blur,shadow,bevel];
}else{
letter.filters = [blur,shadow];
}
}else if(myParent.dofilterbevel){
letter.filters = [blur,bevel];
}else{
letter.filters = [blur];
}
}else if(myParent.dofiltershadow){
if(myParent.dofilterbevel){
letter.filters = [shadow,bevel];
}else{
letter.filters = [shadow];
}
}else if(myParent.dofilterbevel){
letter.filters = [bevel];
}
// -----------


which applies either one two or three depending on the booleans.

But I'm fairly sure that it's overkill and there must be some way to modify script



letter.filters = [blur]
letter.filters = [bevel]


and having both be applied
anybody?
tia
P

wvxvw
April 8th, 2008, 02:05 AM
import flash.filters.BlurFilter;
import flash.filters.DropShadowFilter;
import flash.filters.BevelFilter;

var blur_filter:BlurFilter = new BlurFilter();
var shadow_filter:DropShadowFilter = new DropShadowFilter();
var bevel_filter:BevelFilter = new BevelFilter();
var my_do:Object = {hasBlurFilter:true, hasShadowFilter:true, hasBevelFilter:true};
function filterArray(o:Object):Array {
var f_arr:Array = [];
if(o.hasBlurFilter) f_arr.push(blur_filter);
if(o.hasShadowFilter) f_arr.push(shadow_filter);
if(o.hasBevelFilter) f_arr.push(bevel_filter);
return f_arr;
}
trace(filterArray(my_do)); Mb like this.