【问题标题】:dynamically adding children from library using array使用数组从库中动态添加子项
【发布时间】:2010-02-01 00:53:31
【问题描述】:

我正在将旧的 AS2 项目移植到 AS3,但遇到了问题。我尝试了一些不同的方法,但都没有成功。

在 AS2 中,当从库中动态附加 MC 时,我有时会使用数组。该数组将保存链接引用,就像这样;

var mc:String = state_ar[currentState];
this.container.attachMovie(mc,mc,this.getNextHighestDepth());
targetMC = this.container[mc];

我将如何在 AS3 中做到这一点?

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    您可以使用 getDefinition()getDefinitionByName() 来做到这一点

    查看this answer 获取代码,您的情况听起来很相似。

    注意:唯一的区别是您可能使用的是 MovieClips,而不是图像,因此您不需要构造函数中的 0,0 参数。

    【讨论】:

      【解决方案2】:

      我不太确定这是否是您的要求,但我会试一试。

      //New array to store Movie Clips references    
      var myArray:Array = new Array();
      //Create a movie clip
      var movieClip:MovieClip = new MovieClip();
      //Add it to the array for reference
      myArray.push(movieClip);
      //Put it on the stage
      this.addChild(movieClip);
      

      您仍然可以使用数组来存储对对象的引用,并且可以直接引用它们。


      在 as3 中,库中的 MovieClips 将有一个类名,因此如果您在库中有一个名为 MyMovie 的 MC,您可以将其添加到 as3 中:

      var myMovie:MyMovie = new MyMovie();
      addChild(myMovie);
      

      【讨论】:

      • 对不起,我没有很好地解释自己。该数组用于存储(在 AS2 中称为)链接。例如;我的图书馆中有 3 个不同的电影剪辑,每个都有自己不同的链接 ID。我创建一个数组; state_ar = ['link_1','link_2','link_3'];然后从数组中引用一个索引; var linksID:String = state_ar[0],然后附加电影; attachMovie(linkageID,linkageID, this.getNextHighestDepth()).
      • As3 是面向对象的,因此您可以通过实例化来创建和添加影片剪辑,参见我编辑的代码。希望对您有所帮助。
      • 感谢您对 TripWired 的回复,但问题与其他问题有关。
      【解决方案3】:

      回答;

      var mc:String = state_ar[currentState];
      var classReference:Class = getDefinitionByName(mc) as Class;
      var tempMC:Object = new classReference();
      this.container.addChild(tempMC)
      

      谢谢乔治

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多