【问题标题】:actionscript 3 flash removing a child - bring it back?actionscript 3 flash 删除一个孩子 - 把它带回来?
【发布时间】:2011-03-31 19:58:41
【问题描述】:

我刚开始学习 Flash。无论如何,当我从菜单中退出游戏时,我有一个影片剪辑被删除,例如removeChild(character)。当我按菜单上的“开始”时,我希望角色重新出现。仅当他已被删除时,我如何才能再次添加他?

【问题讨论】:

    标签: flash actionscript-3 flash-cs5


    【解决方案1】:

    您可以再次使用 addChild 来添加他。要测试他是否被添加/删除,你可以测试他的舞台属性是否为真。

    if (!character.stage) 
    {
        addChild(character);
    }
    

    【讨论】:

    • 我不明白这个解决方案。应该是 if (!character.stage) addChild(character) 吗?如果孩子已被移除,舞台属性不会为空吗?此外,如果父剪辑位于显示列表上,此解决方案是否仅适用(即,将子剪辑重新附加到也已从显示列表中删除的父剪辑将毫无用处)。我一直使用 DisplayObjectContainer.contains() 函数进行此类测试。
    【解决方案2】:

    也许您只是想更改孩子的可见性或暂时将其从布局中排除?

    【讨论】:

      【解决方案3】:

      检查角色的父属性,看看它是否附加到任何东西上。但请注意,在已添加的显示对象上使用 addChild 是完全可以的。

      【讨论】:

      • 在已添加的内容上重复使用 addChild 会将其置于显示列表的顶部 :)
      • 确实如此。我的意思是在已添加的对象上使用 addChild 不会导致错误。我应该更具体。
      【解决方案4】:

      删除时将其保存在 var

      var mySavedCharacter:MovieClip = characater
      removeChild(character)
      

      添加回来时只需添加保存的变量

      addChild(mySavedCharacter)
      


      还要记住对象是通过引用传递的,所以对字符的更改也会更改 mySavedCharacter。

      【讨论】:

        【解决方案5】:

        您首先需要确保您具有对要重新添加到舞台的 MovieClip 的引用。如果您在函数中创建此 MovieClip 而没有保存参考,则必须进行“脏”查找以获取参考。以下是如何创建参考以供以后使用的示例:

        var myMovieClip : MovieClip; // make sure you have this outside of a function
        
        function createMyMovieClip() : void
        {
            myMovieClip = new MovieClip();
            addMyMovieClip();
        }
        

        现在您有了对 MovieClip 的引用,您可以执行以下操作:

        function addMyMovieClip() : void
        {
            stage.addChild( myMovieClip );
        }
        
        function removeMyMovieClip : void
        {
            stage.removeChild( myMovieClip );
        }
        

        【讨论】:

          【解决方案6】:
          if (!yourContainer.contains(character)) yourContainer.addChild(character);
          

          此代码假定“yourContainer”是有效的 DisplayObjectContainer 引用,而“character”是对 DisplayObject 的非空引用。

          此外,请确保保存对角色 MovieClip/Sprite 的引用,而不仅仅是添加到显示列表中,以免被 GC。

          【讨论】:

            猜你喜欢
            • 2011-02-23
            • 2011-08-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-25
            • 2011-02-28
            相关资源
            最近更新 更多