2

有没有人尝试过在 Flash 8、AS 2 中的指定停止(和当前)帧处获取舞台上的所有影片剪辑(甚至是嵌套的影片剪辑)的列表?

我做了以下事情:

for(i in _root){
if(typeof(_root[i])=="movieclip"){
trace(_root[i]);}
}

但这对于一级搜索很有用:也就是说,如果在movieclips 中有其他movieclips,则无法访问它们。此外,在一个movieclip 内可以有多个movieclip。

有没有人试图做我想做的事?

再见!

4

6 回答 6

6

完全按照 inkedmn 的建议

printStuff 首先检查它找到的值是否是 mc,如果是,则跟踪并检查其中是否有更多 mc。

printStuff = function(object){
    for(var x in object){
        if(typeof(object[x])=="movieclip"){
            trace(object[x]);
            printStuff(object[x]);
        }
    }
}
printStuff(_root);

哦....对不起,迟到了一年,有些改变...

于 2010-05-31T04:21:32.543 回答
4

你只是想追查吗?如果是这样的话,有一个不错的小无证实用程序叫做 ObjectDumper 可以做到这一点。

这可能是对它最好的解释

所以你可以做的是:

import mx.data.binding.ObjectDumper;

trace(ObjectDumper.toString(_root));

里面可能有很多额外的东西(函数、变量等),所以你可以使用一些额外的参数:

ObjectDumper.toString(obj, showFunctions, showUndefined, showXMLstructures, maxLineLength, indent)
于 2009-01-30T20:04:34.440 回答
1

您可以通过向 MovieClip 类添加一个函数来执行类似的操作:

MovieClip.prototype.StopEverything = function()
{
    stop();
    for (var i in this) {
        if (typeof(this[i]) == "movieclip") {
            this[i].StopEverything();
        }
    }
}
ASSetPropFlags(MovieClip.prototype, ["StopEverything"], 1);

最后一点 ASSetPropFlags 是我发现的,它允许 StopEverything 迭代内置类,如 MovieClip 使用 for..in 用于每个字段,甚至是隐藏的属性和项目。如果没有 ASSetPropFlags,StopEverything() 可能不会命中每个包含的影片剪辑。

于 2009-07-14T22:28:26.007 回答
0

我的 AS2 经验非常有限(我已经完成了一点 AS3),但这里有:

如果您编写了一个递归函数,如果遇到一个影片剪辑,它会查看它的所有子对象以查找其他影片剪辑(并且对在那里找到的任何影片剪辑执行相同的操作,等等)怎么办?该函数可以采用对象参数,以及在每次传递时添加的“找到”剪辑数组。

我希望我能编写能做到这一点的代码,但是(正如我所说),我不是一个 AS2 人:\

于 2009-01-30T19:44:22.967 回答
0

我今天做了与此非常相似的事情。我的剪辑是导航的一部分,是一个电影剪辑的副本。为了找出有多少,我在主舞台上放置了一个变量,该变量由电影剪辑中的动作递增。我设置了一个间隔,等到所有剪辑都被考虑在内,然后使用一个循环来填充我导航的交互性。效果也很好。希望这可以帮助某人。

于 2009-06-18T21:29:37.003 回答
0

AS2.0 未记录的 ObjectDumper 功能没有在根目录枚举动画剪辑的原因是因为它忽略了对象根级别的 nameValue 对,这是一个严重的缺陷(至少可以说),因为关联数组的定义本身就是一个由根处的 nameValue 对组成的数组/对象。

例如:trace(ObjectDumper.toString({myName:"myValue"})) //output = ""。难怪他们没有记录这个“功能”。坦率地说,我认为在 AS2 和 AS3 中都没有内置方法可以轻松可靠地枚举对象的所有内容以用于调试目的,这真是令人惊讶。如果你在网上搜索,你会发现 for...in 循环的黑客工作只查看数组的根......没有递归。

于 2010-03-29T12:11:55.557 回答