Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 缩短函数代码并转换变量_Flash_Actionscript_Function_Actionscript 2_Movieclip - Fatal编程技术网

Flash 缩短函数代码并转换变量

Flash 缩短函数代码并转换变量,flash,actionscript,function,actionscript-2,movieclip,Flash,Actionscript,Function,Actionscript 2,Movieclip,我有这个AS2代码,当我使用TweenLite翻滚mc时,它会做一些简单的动画 我觉得我有很多重复的代码 有没有一种方法可以像这样指定一个函数 博克斯林卡 还有剩下的代码,目标movieclip的路径在函数中而不是函数变量中 如何使此代码尽可能短 是否可以将变量:String转换为变量:MovieClip? 在本例中,我将如何做到这一点 import gs.*; import gs.easing.*; function imageAlpha(mc_target:MovieClip) {

我有这个AS2代码,当我使用TweenLite翻滚mc时,它会做一些简单的动画

我觉得我有很多重复的代码

有没有一种方法可以像这样指定一个函数

博克斯林卡

还有剩下的代码,目标movieclip的路径在函数中而不是函数变量中

如何使此代码尽可能短

是否可以将变量:String转换为变量:MovieClip? 在本例中,我将如何做到这一点

 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);

使用数组而不是命名变量

a_box.link_1, a_box.link_2, ..., a_box.link_3 
变成

a_box.link[ i ] where i = 0 to n-1, n = number of links
箭头也是如此

接下来,为boxLink创建一个包装器

并总结出每个方框所需的步骤:

public function 
processBox(x:BoxType):SomeReturnType {
    imageAlpha(d_box.image);
    boxLink(a_box.link1,a_box.arrow1,a_box.image,'http://www.google.no');
}
并在数组框上运行for循环,或使用forEach成员函数:

boxes.forEach(processBox);
不要忘记用适当的类型替换BoxType、SomeReturnType和ReturnType。
这有用吗?注意:这是未经测试的代码,但应该让您开始

谢谢,类似的东西,但我有点想在函数中有所有的代码,所以我可以插入boxLinka;它可以用一个a_-box.link1,a_-box.arrow1,a_-box.image做任何事情?boxLinkWrapper就是这么做的。好吧,我明白了;但是我怎么能把所有代码都放在函数boxLink中呢?在vim中,只需执行ggdGzz即可解决您的问题
public function 
processBox(x:BoxType):SomeReturnType {
    imageAlpha(d_box.image);
    boxLink(a_box.link1,a_box.arrow1,a_box.image,'http://www.google.no');
}
boxes.forEach(processBox);