如何在 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;
我在 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;