0

我正在开发一个交互式界面。在时间线上,它包含一个动作脚本层和一个电影剪辑层(舞台上大约 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();
    }
}

它在那个上完美地工作,但不知道如何处理其他人。有人知道如何在其他电影剪辑上复制代码吗?我希望所有影片剪辑都执行相同的操作。谁能帮我吗?我对编码真的很陌生,对不起,如果这是一个愚蠢的问题。提前致谢!

4

1 回答 1

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

于 2013-11-13T21:41:07.637 回答