【问题标题】:this[String] can't be added into a MovieClipthis[String] 无法添加到 MovieClip
【发布时间】:2013-01-29 07:41:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: actionscript-3 string addchild


    【解决方案1】:

    如果我理解你的话,你正试图在另一个名为 BoxMovieClip 中添加一个名为(实例名称为)StringMovieClip,对吗?

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

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

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

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

    【讨论】:

    • 您已经正确识别了 Hwang 遇到的问题,但我认为您应该更准确地区分顶级类(例如,String)和 Flash 库类(例如,MovieClip)。从技术上讲,只要不包含它们的库,后者就不受限制。此外,您可能需要指出用于 AS3 中的对象的 lowerCamelCase 约定。
    【解决方案2】:

    你的语法有点奇怪 - 你说你有一个 MC 称为 'Box'。您是在 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 绝对正确 - 保留关键字每次都会破坏您的代码...

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多