【问题标题】:ActionScript - Instantiate New Object From Instance?ActionScript - 从实例实例化新对象?
【发布时间】:2011-03-23 14:14:42
【问题描述】:

如何从一个类实例中实例化另一个类对象?

在下面的代码(不起作用)中,我希望该函数根据传递的参数的类返回一个新的类实例。换句话说,我希望函数返回 MySprite 的新实例,而不必调用 new MySprite();

var mySprite:Sprite = new MySprite();
var anotherSprite:Sprite = makeAnotherSprite(mySprite);

function makeAnotherSprite(instance:Sprite):Sprite
    {
    return new getDefinitionByName(getQualifiedClassName(instance));
    }

【问题讨论】:

    标签: actionscript-3 class instance arguments


    【解决方案1】:

    您的解决方案几乎奏效了。这是更正后的函数:

    function makeAnotherSprite(instance:Sprite):Sprite
    {
        var qualifiedClassName:String = getQualifiedClassName(instance);
        var clazz:Class = getDefinitionByName(qualifiedClassName) as Class; 
        return new clazz();
    }
    

    【讨论】:

      【解决方案2】:

      一种替代方法,而不是您尝试做的,但应该可以工作。

      function makeAnotherSprite(instance:Sprite):Sprite
      {
      var myClass:Class = Object(instance).constructor; 
      return new myClass();
      }
      

      【讨论】:

      • 不错!我忘记了使用构造函数属性。这比使用 flash.utils 静态函数要干净得多。谢谢!
      【解决方案3】:

      做到这一点:

      return new (getDefinitionByName(getQualifiedClassName(instance)))();
      

      (括号)

      【讨论】:

        猜你喜欢
        • 2011-08-29
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 2022-08-04
        • 1970-01-01
        相关资源
        最近更新 更多