0

假设我有一个名为“Box”的电影剪辑,而“字符串”实际上是“盒子”,只是它不是电影剪辑

我现在面临的问题是我不能使用类似 circle.addChild(this[String])

我试过追踪 this[Strin]==Box 并且结果返回 true。当我删除 circle.addChild(this[String]) 时,它不会将 Box 添加到其中。但是,当我追踪是否有任何新对象添加到圆圈中时,数量仍然保持不变。

知道这里似乎有什么问题吗?

4

2 回答 2

2

如果我理解你的话,你正试图在另一个名为Box的StringMovieClip中添加一个被调用的(具有实例名称的),对吗?MovieClip

好吧,您不能将名称String赋予对象,因为String它是 ActionScript 3.0 中的类名
您不能使用任何类名或受保护的关键字来命名任何对象,例如if, for, class, Boolean...
这些是 ActionsScript 使用的词全局(它们是顶级关键字)。

另外,请注意,尽管您可以命名一个对象(给它一个实例名称)MovieClip、、、Sprite等等LoaderStage但所有这些名称都被 ActionScript 用作类名、内部包、可以导入到您的动画/应用程序和 Flash将自动为您导入几乎每一个。
如果你用这些词命名你的对象,你会冒一些风险,比如不能正常工作或根本不能编译的代码......

正如@ Bosworth99和@ merv所指出的,您可能还注意到ActionScript 使用的命名约定UpperCamelCaselowerCamelCase

类(按照惯例)用 UpperCamelCase(第一个字母大写)编写,这表明 name 是类名。
对象通常用lowerCamelCase(首字母小写,每个新组合词大写),表示该词是对象名称(或另一个关键字,可能已经保留)。

于 2011-03-12T18:54:56.180 回答
0

你的语法有点奇怪——你说你有一个叫做“盒子”的 MC。您是在 Flash ide 中创建它 - 还是以编程方式?无论哪种方式-您似乎是在引用类,而不是类(对象)的实例。尝试:

var _circle:MovieClip;
var _box:Sprite;

private function createDisplayObjects():void
{
_circle = new MovieClip();
this.addChild(_circle);

_box = new Sprite();
_circle.addChild(_box);

}

并且 - 正如普遍同意的做法一样,类名大写,实例名小写。我也喜欢在私有变量前加下划线。

NemoStein 是绝对正确的 - 保留关键字每次都会破坏您的代码......

祝你好运

于 2011-03-12T19:04:43.923 回答