【问题标题】:Convert String into an object instance name将 String 转换为对象实例名称
【发布时间】:2011-09-16 08:13:48
【问题描述】:

我正在尝试将字符串转换为实例名称。

stage.focus = ["box_"+[i+1]];

这让我回来了 = box_2;

但我需要它是一个对象而不是字符串。

在 as2 中我可以使用 eval。在 as3 中怎么做?

【问题讨论】:

    标签: arrays actionscript-3 object string


    【解决方案1】:

    如果您想访问当前班级的成员,已经给出的答案将起作用。但是,如果您正在查找的实例不是该类的一部分,那么您就不走运了。

    例如:

    private function foo():void {
        var box_2:Sprite;
        trace(this["box_"+(i+1)]);
    }
    

    不起作用,因为 box_2 不是该类的一部分。在这种情况下,强烈建议使用数组。

    如果您想访问 DisplayObject(例如,Sprite 或 MovieClip),您也可以使用 getChildByName。但在这种情况下,box_2 将是 对象 的名称,而不是 变量 的名称。你设置的名字像

    var box:Sprite;
    box.name = "box_2";
    

    不过,我还是推荐一个数组。

    【讨论】:

    • 我确实有一个数组,我想要的是,在你输入 box_1 后,如果正确,将焦点更改为 box_2...
    【解决方案2】:

    例如,如果你想在你的主类中调用函数“start”,你可以这样做:

    this["start"]();
    

    变量也是如此。由于所有类都是 Object 的子类,因此您可以像使用普通对象一样检索它们的变量。像这样的一个类:

    package{
        import flash.display.Sprite;
        public class Main extends Sprite{
            public var button:Sprite;
    
            public function Main(){
                trace(this["button"]);
            }
        }
    }
    

    会输出:

    [object Sprite]
    

    【讨论】:

      【解决方案3】:

      正确的语法是:

      this["box_"+(i+1)]
      

      【讨论】:

      • +1 在我的答案中我在此之后添加了.,并删除了我的答案。
      • 谢谢,丹妮!如果事实是正确的语法! stage.focus = this["box_"+(i+1)];
      猜你喜欢
      • 2014-05-07
      • 2011-11-27
      • 2020-12-31
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2013-10-16
      • 2021-11-17
      相关资源
      最近更新 更多