I have this AS2 code that does some simple animations when I rollover a mc using TweenLite.
I feel that I have a lot of repeating code.
Is there a way to be able to just specify a function like this
boxLink(a);
and have the rest of the code, with the path to the target movieclip in the function instead of in the function variable?
How can I make this code as short as possible?
Is it possible to convert a variable:String to a variable:MovieClip? How would i do that in this example?
import gs.*; import gs.easing.*; function imageAlpha(mc_target:MovieClip) { mc_target.onRollOver = function() { TweenLite.to(mc_target,1,{_alpha:100, ease:Back.easeOut}); }; mc_target.onRollOut = function() { TweenLite.to(mc_target,1,{_alpha:60, ease:Back.easeOut}); }; } function boxLink(mc_function:MovieClip, mc_target:MovieClip, mc_image:MovieClip, linkURL:String) { mc_function.onRollOver = function() { TweenLite.to(mc_target,0.5,{_xscale:150, _yscale:150, ease:Back.easeOut}); TweenLite.to(mc_image,1,{_alpha:100, ease:Back.easeOut}); }; mc_function.onRollOut = function() { TweenLite.to(mc_target,0.5,{_xscale:100, _yscale:100, ease:Back.easeOut}); TweenLite.to(mc_image,1,{_alpha:60, ease:Back.easeOut}); }; mc_function.onRelease = function() { if (linkURL) { getURL(linkURL); } }; } imageAlpha(a_box.image); imageAlpha(b_box.image); imageAlpha(c_box.image); imageAlpha(d_box.image); boxLink(a_box.link1,a_box.arrow1,a_box.image,'http://www.google.no'); boxLink(a_box.link2,a_box.arrow2,a_box.image,'http://www.google.no'); boxLink(a_box.link3,a_box.arrow3,a_box.image,'http://www.google.no'); boxLink(b_box.link1,b_box.arrow1,b_box.image,'http://www.google.no'); boxLink(b_box.link2,b_box.arrow2,b_box.image,'http://www.google.no'); boxLink(b_box.link3,b_box.arrow3,b_box.image,'http://www.google.no'); boxLink(c_box.link1,c_box.arrow1,c_box.image,'http://www.google.no'); boxLink(c_box.link2,c_box.arrow2,c_box.image,'http://www.google.no'); boxLink(c_box.link3,c_box.arrow3,c_box.image); boxLink(d_box.link1,d_box.arrow1,d_box.image,'http://www.google.no'); boxLink(d_box.link2,d_box.arrow2,d_box.image,'http://www.google.no'); boxLink(d_box.link3,d_box.arrow3,d_box.image);
Use arrays instead of named variables
becomes
Similarly for arrows.
Next, create a wrapper for
boxLink()Also, since you have a number of such boxes, put them in an array:
and wrap up the steps you’d need for each box:
and run a for-loop over the array boxes, or use the forEach() member function:
Don’t forget to replace BoxType, SomeReturnType and ReturnType by the appropriate types. Does that help? (Note: this is untested code, but should get you started!)