2017-05-18 40 views
1

我在Movieclip中放置了很多相同的Movieclip。我想给他们起个名字,但是为他们每个人手工做这件事都是一件烦人的事,所以我想通过动作来做。如何从Flash中的类中为Movieclip命名Movieclip?

我命名item_Potion(无关)一MovieClip类,当它运行的构造函数,我们增加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] 

所以现在这是我的问题,我哪有名从类的Movieclips没有错误?

回答

3

想作为一个“可变令牌”将引用该对象的“放置在时间轴上的对象的name属性”的,因此需要为不可变的作为错误消息状态!


一个理性的解决方法是使用自定义类(可能是从MovieClip类派生),其中一个专用的字段是存在保持特定名称的对象的分配的对象:

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

快速解决办法是为用户提供非常MovieClip类的dynamic class对象和动态属性存储“”:

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