如何从 Flash 中的类中命名 Movieclip 中的 Movieclip?

Posted

技术标签:

【中文标题】如何从 Flash 中的类中命名 Movieclip 中的 Movieclip?【英文标题】:How can I name Movieclips in a Movieclip from a Class in Flash? 【发布时间】:2017-10-17 15:43:20 【问题描述】:

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

我有一个名为 item_Potion 的 Movieclip 类 (unrelated),当它运行构造函数时,我们将 1 添加到名为 itemNumber 的全局变量中,然后我们把名字命名为name = String("item" + itemNumber);,简单来说,我们把它命名为item + itemNumber

为了清楚起见,这个类被绑定到这个 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]

所以现在这是我的问题,我怎样才能在没有错误的情况下从类中命名电影剪辑?

【问题讨论】:

【参考方案1】:

将“时间轴放置对象的“name 属性”视为将引用该对象的“变量标记”,因此需要不可变为错误消息指出!


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

快速 解决方法是为对象提供 MovieClip 类的 dynamic class,并将“name”存储在动态属性中:

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

【讨论】:

以上是关于如何从 Flash 中的类中命名 Movieclip 中的 Movieclip?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python Selenium 中的类中提取所有 href?

如何创建一个从打字稿中的类中提取所有方法的类型?

从脚本中的类中获取值

如何从具有相同简单名称的类中查找某个方法?

如何从包含的类中执行函数

如何从基类中的函数调用重载函数?