Flash 8 Blur tweening (movieclip) items in an array

I am trying to animate a navigation menu so that when you roll over an item (say “Contact Us”), it moves up a bit, and the rest of the items blur.

I allllmost have it working but there is one piece of code that is no longer working (blurTween.onMotionChanged) since I put it into a for each loop in order to go through the array and apply the blur filter to each item.

So my code is as follows:

import caurina.transitions.Tweener;
import flash.filters.BlurFilter;
import mx.transitions.Tween;
import mx.transitions.easing.*;


// INIT

menuYPos = technicalLiterature_btn._y;
rollOverYPos = -3;


// ####### EVENTS #######

technicalLiterature_btn.onRollOver = function() {
	navRollOver(technicalLiterature_btn);
}
technicalLiterature_btn.onRollOut = function() {
	navRollOut(technicalLiterature_btn);
}

websites_btn.onRollOver = function() {
	navRollOver(websites_btn);
}
websites_btn.onRollOut = function() {
	navRollOut(websites_btn);
}


advertising_btn.onRollOver = function() {
	navRollOver(advertising_btn);
}
advertising_btn.onRollOut = function() {
	navRollOut(advertising_btn);
}


pr_btn.onRollOver = function() {
	navRollOver(pr_btn);
}
pr_btn.onRollOut = function() {
	navRollOut(pr_btn);
}

branding_btn.onRollOver = function() {
	navRollOver(branding_btn);
}
branding_btn.onRollOut = function() {
	navRollOut(branding_btn);
}


exhibition_btn.onRollOver = function() {
	navRollOver(exhibition_btn);
}
exhibition_btn.onRollOut = function() {
	navRollOut(exhibition_btn);
}


cpd_btn.onRollOver = function() {
	navRollOver(cpd_btn);
}
cpd_btn.onRollOut = function() {
	navRollOut(cpd_btn);
}


contact_btn.onRollOver = function() {
	navRollOver(contact_btn);
}
contact_btn.onRollOut = function() {
	navRollOut(contact_btn);
}


// ####### FUNCTIONS ########

function navRollOver(movieClip) {
	Tweener.addTween(movieClip, {_alpha:100, time:.5, _y:rollOverYPos, transition:"easeOut"});

	function deleteItem(target:String) {
		for (i=0; i<menuArr.length; i++) {
			if (menuArr* == target) {
				menuArr.splice(i, 1);
				//trace(menuArr);
			}
		}
	}

	var menuArr:Array = new Array(technicalLiterature_btn, websites_btn, advertising_btn, pr_btn, branding_btn, exhibition_btn, cpd_btn, contact_btn);
	deleteItem(movieClip);
	
	len = menuArr.length;
	
	for(var i=0; i<len; i++){
		//trace(i);
		//trace(menuArr*);
		var blurTween:Tween = new Tween(menuArr*, "blur", Strong.easeOut, 0, 10, 1, true);
		//trace(menuArr*);
		blurTween.onMotionChanged = function() {
			menuArr*.filters = [new BlurFilter(menuArr*.blur, menuArr*.blur, 1)];
		};
	}
}



function navRollOut(movieClip) {
	var menuArr:Array = new Array(technicalLiterature_btn, websites_btn, advertising_btn, pr_btn, branding_btn, exhibition_btn, cpd_btn, contact_btn);
	
	Tweener.addTween(movieClip, {_alpha:100, time:.5, _y:menuYPos, transition:"easeOut"});
	
	len = menuArr.length;
	
	for(var i=0; i<len; i++){
		var blurTween:Tween = new Tween(menuArr*, "blur", Strong.easeOut, 10, 0, 1, true);
		
		blurTween.onMotionChanged = function() {
			menuArr*.filters = [new BlurFilter(menuArr*.blur, menuArr*.blur, 1)];
		};
	}
}

Any ideas?

you mean like this

http://mav-media.com/Maverick

Precisely!

it may help to stick the array item in a variable then stick that in the code above

I don’t think that’s the problem. The problem is that blurTween.onMotionChanged is returning undefined since I put it into the for each loop

I mean this:

for(var i=0; i<len; i++){
		var blurTween:Tween = new Tween(menuArr*, "blur", Strong.easeOut, 10, 0, 1, true);
		
		blurTween.onMotionChanged = function() {
			menuArr*.filters = [new BlurFilter(menuArr*.blur, menuArr*.blur, 1)];
		};
	}

var blurTween:Tween =

var [“blurTween”+i]:Tween =

or you are calling the same tween and canceling yourself out?

you also may want to _root in the buttons as it may be looking for an array inside the buttons rather than the main timeline

I have figured it out. I just separated the loops so the blurTween.onMotionChanged was no long within a for loop:


	for(var i=0; i<len; i++){
		//trace(i);
		//trace(menuArr*);
		var blurTween:Tween = new Tween(menuArr*, "blur", Strong.easeOut, 10, 0, 1, true);
		//trace(menuArr*);
	}
	
	
	blurTween.onMotionChanged = function() {
		for(var i=0; i<len; i++){
			menuArr*.filters = [new BlurFilter(menuArr*.blur, menuArr*.blur, 1)];
		}
	}


or that :stuck_out_tongue: