此[String]无法添加到MovieClip中

时间:2011-03-12 17:28:01

标签: actionscript-3 string addchild

假设我有一个名为“Box”的MovieClip,而“String”实际上是“box”,只是它不是一个MovieClip

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

这样的东西

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

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

2 个答案:

答案 0 :(得分:2)

如果我理解你,你试图在名为 Box MovieClip内添加一个名为{实例名称为 String MovieClip >,对吧?

嗯,您不能将名称​​ String 提供给对象,因为String是ActionScript 3.0中的类名 您不能使用任何类名或受保护关键字命名任何对象,例如ifforclassBoolean ...
这些是ActionScript全局使用的单词(它们是顶级关键字)。

另请注意,虽然您可以命名对象(为其指定实例名称)MovieClipSpriteLoaderStage等,但所有这些名称由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是绝对正确的 - 保留关键字每次都会使你的代码变得笨拙......

祝你好运