我有一个Flash AS2网站,我需要获取一个instancied movieclip中的所有按钮(为每个按钮定义一个特定的属性)。我一直在寻找一个小时或更长时间,但我只是得到了AS3的解决方案!有人能帮助我吗?
谢谢大家!
答案 0 :(得分:2)
在运行时创建的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