AS2:循环播放movieclip元素

时间:2011-04-26 21:46:53

标签: flash actionscript-2 flash-cs4

我有一个Flash AS2网站,我需要获取一个instancied movieclip中的所有按钮(为每个按钮定义一个特定的属性)。我一直在寻找一个小时或更长时间,但我只是得到了AS3的解决方案!有人能帮助我吗?

谢谢大家!

2 个答案:

答案 0 :(得分:2)

哇,AS2,有一段时间没见过。

在运行时创建的AS2剪辑(通过代码)具有正深度值,在authortime创建的剪辑(通过转换为符号)具有负深度值。

最简单的循环方法是使用for...in。 下面是一个包含在一个漂亮的可重用函数中的示例,它还允许您有选择地遍历目标剪辑中的所有嵌套剪辑:

var clips:Array = getChildrenOf(this,true);
var numClips:Number = clips.length;
for(var i:Number = 0 ;  i < numClips ; i++) trace("clip["+i+"]: " + clips[i]._name + " at depth " + clips[i].getDepth() + " in " + clips[i]._parent._name);

function getChildrenOf(target:MovieClip,recursive:Boolean):Array{
    var result:Array = [];
    for(var i in target){//loop through all properties
        if(target[i] instanceof MovieClip) {//look for movieclips
            result.push(target[i]);//found a clip add it to the result array
            if(recursive) result = result.concat(getChildrenOf(target[i],true));//concatenate children of clips at this level,recurse
        }
    }
    return result;
}

第二个参数是可选的,所以如果省略它(例如getChildrenOf(this);),你只能让目标影片剪辑中的第一级深度的孩子(例如它是孩子,但不是'孙子') )

HTH

答案 1 :(得分:0)

首先使用以下方法获取动画片段中的深度:

var depth:int = movieclip.getDepth();

然后你只需用for循环遍历movieclip,直到达到你从getDepth得到的值:

for(var i:int = 0; i < depth; i++){
    trace(movieclip.getInstanceAtDepth(i));
}

这将获得movieclip中的所有实例。

如果由于未经过测试而无法使用此代码,请阅读有关参考中方法的更多信息。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00001301.html

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/2/help.html?content=00001302.html