假设我有一个名为“Box”的MovieClip,而“String”实际上是“box”,只是它不是一个MovieClip
我现在面临的问题是我不能使用像circle.addChild(this [String])
这样的东西我试过跟踪[Strin] == Box,结果返回true。 当我删除circle.addChild(this [String])时,它不会将Box添加到其中。 但是,当我跟踪时,是否有任何新对象添加到圆圈中,数量仍然保持不变。
知道这里似乎有什么问题吗?
答案 0 :(得分:2)
如果我理解你,你试图在名为 Box MovieClip内添加一个名为{实例名称为 String 的MovieClip
>,对吧?
嗯,您不能将名称 String 提供给对象,因为String
是ActionScript 3.0中的类名
您不能使用任何类名或受保护关键字命名任何对象,例如if
,for
,class
,Boolean
...
这些是ActionScript全局使用的单词(它们是顶级关键字)。
另请注意,虽然您可以命名对象(为其指定实例名称)MovieClip
,Sprite
,Loader
,Stage
等,但所有这些名称由ActionScript用作类名,内部包,可以导入到动画/应用程序中,Flash会自动导入几乎每一个。
如果使用这些词命名对象,则会产生一些风险,例如代码无法正常工作或根本无法编译......
正如@ Bosworth99 和@ merv 指出的那样,您也可以注意到ActionScript使用的命名约定, UpperCamelCase 和的 lowerCamelCase 即可。
类(按照惯例)用UpperCamelCase编写(首字母大写),表示name是类名。
通常,对象使用lowerCamelCase(首字母较低,每个新的组合单词大写),表示该单词是对象名称(或其他关键字,可以保留)。
答案 1 :(得分:0)
你的语法有点奇怪 - 你说你有一个名为'Box'的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);
}
而且 - 正如一般认可的做法一样,类名是大写的,实例名是lowerCamelCase。我也喜欢在私人变量前加上下划线。
NemoStein是绝对正确的 - 保留关键字每次都会使你的代码变得笨拙......
祝你好运