在 AS2 中将对象名称转换为字符串

Converting Object Names to Strings in AS2

所以我创建了一个名为 "potato" 的对象,然后开始循环检查“_level0”中是否有名称为“_level0.potato”的对象。我的想法是,因为 _level0 中的东西是对象而不是字符串,对象名称不能被识别为字符串,所以我猜我需要找到一种方法将对象名称转换为字符串,反之亦然。

var potato:MovieClip = this.createEmptyMovieClip("potato", this.getNextHighestDepth());
for(objects in _level0){
trace(_level0[objects])
    if(_root[objects] == "_level0.potato"){
        trace("OMG, i found a potato on level0")
    }
}

您关于将对象存储为字符串的建议是不正确的。如果您尝试在

之前使用 typeof
trace(typeof _level0[objects])

你会看到它的类型是movieclip 你的“_level0.potato”是string 他们将不平等。但是您可以使用 String(...) 构造将对象引用转换为字符串。

关于名字。你混淆了名称和引用。 MovieClip 对象与 ac2 中的其他对象一样,属性 称为 _name。在此 属性 中,对象的名称像字符串一样存储。但只有名称,而不是到达目的地的完整路径。 对于你的土豆 mc _name 将等于 "potato" 所以你可以这样搜索

var potato:MovieClip = this.createEmptyMovieClip("potato",this.getNextHighestDepth());
for(objects in _level0){
trace(_level0[objects])
    if(_root[objects]._name == "potato"){
        trace("OMG, i found a potato on level0")
    }
}