假设我有一个名为“Box”的电影剪辑,而“字符串”实际上是“盒子”,只是它不是电影剪辑
我现在面临的问题是我不能使用类似 circle.addChild(this[String])
我试过追踪 this[Strin]==Box 并且结果返回 true。当我删除 circle.addChild(this[String]) 时,它不会将 Box 添加到其中。但是,当我追踪是否有任何新对象添加到圆圈中时,数量仍然保持不变。
知道这里似乎有什么问题吗?
假设我有一个名为“Box”的电影剪辑,而“字符串”实际上是“盒子”,只是它不是电影剪辑
我现在面临的问题是我不能使用类似 circle.addChild(this[String])
我试过追踪 this[Strin]==Box 并且结果返回 true。当我删除 circle.addChild(this[String]) 时,它不会将 Box 添加到其中。但是,当我追踪是否有任何新对象添加到圆圈中时,数量仍然保持不变。
知道这里似乎有什么问题吗?
如果我理解你的话,你正试图在另一个名为Box的StringMovieClip
中添加一个被调用的(具有实例名称的),对吗?MovieClip
好吧,您不能将名称String赋予对象,因为String
它是 ActionScript 3.0 中的类名
您不能使用任何类名或受保护的关键字来命名任何对象,例如if
, for
, class
, Boolean
...
这些是 ActionsScript 使用的词全局(它们是顶级关键字)。
另外,请注意,尽管您可以命名一个对象(给它一个实例名称)MovieClip
、、、Sprite
等等Loader
,Stage
但所有这些名称都被 ActionScript 用作类名、内部包、可以导入到您的动画/应用程序和 Flash将自动为您导入几乎每一个。
如果你用这些词命名你的对象,你会冒一些风险,比如不能正常工作或根本不能编译的代码......
正如@ Bosworth99和@ merv所指出的,您可能还注意到ActionScript 使用的命名约定UpperCamelCase和lowerCamelCase。
类(按照惯例)用 UpperCamelCase(第一个字母大写)编写,这表明 name 是类名。
对象通常用lowerCamelCase(首字母小写,每个新组合词大写),表示该词是对象名称(或另一个关键字,可能已经保留)。
你的语法有点奇怪——你说你有一个叫做“盒子”的 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 是绝对正确的 - 保留关键字每次都会破坏您的代码......
祝你好运