AS2隐藏数组中的对象

时间:2015-07-02 20:24:56

标签: flash actionscript actionscript-2

关于动作2的问题。 我有两个数组 - 一个用于按钮,另一个用于按钮触发的影片剪辑:

var def:Array = [mc1, mc2, mc3];
var defBtn:Array = [btn1, btn2, btn3];

所以我得到了由相应按钮触发的影片剪辑 - 任何被调用的影片剪辑都是可见的并播放其时间轴。

for(i=0; i<def.length; i++) {
    defBtn[i].iv = i;
    def[i].iv = i;
    defBtn[i].onRelease = function() {
        for( i=0; i<defBtn.length; i++ ) { 
            def[this.iv]._visible = true;
            def[this.iv].play();
        } 
    };          
};

但是,任何被调用的影片剪辑始终保持可见状态。 我希望数组中的所有影片剪辑都是不可见的,除了相应按钮调用的影片。

不知道如何做到这一点因为我需要使用onRelease(而不是onRollOut)来让影片剪辑在它们动画片后稍微消失。

我很感激您对这个AS代码的帮助! 谢谢

1 个答案:

答案 0 :(得分:2)

自从我必须编写AS2代码以来已经很多年了,但我会尝试一下......

在每个按钮上,设置以下代码,将索引值更改为数组中按钮的索引:

on(release){
    showClip(0);  // change value here as needed
}

在同一时间线上存在按钮和动画片段,您需要此代码:

var def:Array = [mc1, mc2, mc3];
var defBtn:Array = [btn1, btn2, btn3];

function showClip(clipToShow:Number) {

    // hide all clips
    for( i = 0; i < def.length; i++ ) {
        def[i]._visible = false;
        def[i].stop();
    }

    // only show clip after all clips have been hidden
    def[clipToShow]._visible = false;
    def[clipToShow].stop();

};

不幸的是,我没有办法在我的机器上编译AS2代码,因为我有Adobe CC 2015,它不再支持AS2;否则,我会为你测试这段代码。希望这对你有用。别的我知道了。