(AS3)对不同电影片段的相同行动

时间:2013-11-13 15:54:02

标签: actionscript-3

我正在开发一个交互式界面。在时间轴上,它包含一个动作脚本层,以及一个影片剪辑层(舞台上大约12个)。每个影片剪辑都有相同的动画,我在其中一个上应用了以下代码:

a.stop();

a.addEventListener(MouseEvent.MOUSE_DOWN, adown);
a.addEventListener(MouseEvent.MOUSE_UP, aup);

a.buttonMode = true;
a.mouseChildren = false;

function adown(e:MouseEvent):void 
{
    var mc:MovieClip = MovieClip(e.currentTarget);

    mc.removeEventListener(Event.ENTER_FRAME, rewind);

    mc.play();
    mc.addEventListener(Event.ENTER_FRAME, advance);
}

function aup(e:MouseEvent):void 
{
    var mc:MovieClip = MovieClip(e.currentTarget);

    mc.removeEventListener(Event.ENTER_FRAME, advance);

    mc.prevFrame();
    mc.addEventListener(Event.ENTER_FRAME, rewind);
}



function advance(e:Event):void 
{
    var mc:MovieClip = MovieClip(e.currentTarget);

    if (mc.currentFrame == mc.totalFrames)
    {
        mc.stop();
        mc.removeEventListener(Event.ENTER_FRAME, advance);
    }
}

function rewind(e:Event):void 
{
    var mc:MovieClip = MovieClip(e.currentTarget);

    if (mc.currentFrame == 1)
    {
        mc.stop();
        mc.removeEventListener(Event.ENTER_FRAME, rewind);
    }
    else
    {
        mc.prevFrame();
    }
}

它完全适用于那个,但不知道如何处理其他人。 有人知道如何在其他影片剪辑上复制代码吗? 我希望所有的电影剪辑都做同样的动作。 谁能帮我吗?我真的很喜欢编码,对不起,如果这是一个愚蠢的问题。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

避免为一组想要以相同方式运行的对象复制代码的常用方法是将它们全部放在一个数组中并迭代它:

var movieArray:Array = new Array;

movieArray.push(a);
movieArray.push(b); //assuming you named your other movieclips b, c, etc.
movieArray.push(c);
//.
//.
//...until all of them are in there.

然后用for循环遍历它们:

for (var i:uint = 0; i < movieArray.length; i++) {
    movieArray[i].stop();
    movieArray[i].addEventListener(MouseEvent.MOUSE_DOWN, adown);
    movieArray[i].addEventListener(MouseEvent.MOUSE_UP, aup);

    movieArray[i].buttonMode = true;
    movieArray[i].mouseChildren = false;
}

现在,您的所有动画片段的行为应与a的行为相同。