【问题标题】:How can I name Movieclips in a Movieclip from a Class in Flash?如何从 Flash 中的类中命名 Movieclip 中的 Movieclip?
【发布时间】: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]

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

【问题讨论】:

    标签: actionscript-3 flash actionscript air


    【解决方案1】:

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


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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 2013-09-16
      • 2010-10-22
      • 2011-04-07
      相关资源
      最近更新 更多