如何在 Flash 中从 Class 命名 Movieclip 中的 Movieclip?

How can I name Movieclips in a Movieclip from a Class in Flash?

我在 Movieclip 中放置了很多相同的 Movieclips。我想给它们命名,但是为它们中的每一个都手动命名会很烦人,所以我想通过 actionscript 来命名。

我有一个名为 item_Potion (不相关) 的 Movieclip class,当它运行构造函数时函数 我们将 1 加到名为 itemNumber 的全局变量,然后我们将名称设为 name = String("item" + itemNumber); 简单来说,我们将其设为 item + itemNumber

明确一点,这个 class 绑定到这个 Movieclip item_Potion。

问题来了:

当我尝试通过 name = String("item" + itemNumber); 更改名称时,出现以下错误:

Error: Error #2078: The name property of a Timeline-placed object cannot be modified.
    at flash.display::DisplayObject/set name()
    at item_Potion()[E:\g\item_Potion.as:33]
    at flash.display::Sprite/constructChildren()
    at flash.display::Sprite()
    at flash.display::MovieClip()
    at mc_Map()[E:\g\mc_Map.as:15]
    at Game()[E:\g\Game.as:82]

所以这就是我的问题,我如何才能在不出错的情况下从 class 中命名 Movieclips?

将“name 属性 of a Timeline-placed object”想象成"variable token" 将引用该对象,因此需要像错误消息所述一样是不可变的!


一个合理的解决方法是为对象分配自定义 class(可能派生自 MovieClip class),其中有一个专用字段来保存特定的 name 的对象:

public class MySpecialMC extends MovieClip {
    public var objName:String;
}

快速 解决方法是为对象提供非常 MovieClip 动态 class class 并将“name”存储在动态 属性:

myObj['objName'] = 'item' + itemNumber;