【问题标题】:How can I link a reference to a movieclip in another AS3 file?如何将引用链接到另一个 AS3 文件中的影片剪辑?
【发布时间】:2011-07-03 14:53:25
【问题描述】:

在我的主 AS 中,尽管有舞台,我仍使用 MovieClip 作为容器。 在另一个AS文件中,我想将Container作为参考,并添加Child(如子弹等),但我真的不知道如何编写代码。

如果我只在当前(子)AS中添加Child,它可以工作,但是removeChild只是一个问题。

【问题讨论】:

    标签: flash actionscript-3 programming-languages


    【解决方案1】:

    不知道我说的对不对,但是......

    你的主类中有一个容器,你想从另一个类中访问它,对吗?

    我猜你需要的是一个看起来像这样的 Globals.as

    Globals.as // you name it...
    
    package {
    
      public class Globals extends Object {
    
          public static var YOUR_REFERENCE_VAR:MovieClip; // This is a static var 
    
      }
    
    }
    

    您需要将 YOUR_REFERENCE_VAR 分配给主类中的 MovieClip。然后,您可以在项目中的任何位置访问该影片剪辑。

    package {
      import Globals.as;
      import flash.display.Sprite;
    
      public class GameEngine extends Sprite  {
          public function GameEngine () {
             addEventListener (Event.ADDED_TO_STAGE, _onAddedToStage);
          }
    
          private function _onAddedToStage (evt:Event):void {
             removeEventListener (Event.ADDED_TO_STAGE, _onAddedToStage);
    
             //When you to access that MovieClip you access it like this
             Globals.YOUR_REFERENCE_VAR.alpha = 0.5;
          }
    
      }       
    }
    

    现在你像这样使用 addChild/removehild

    var spr:Sprite = new Sprite();
    Globals.YOUR_REFERENCE_VAR.addChild (spr);
    //Remove the child
    Globals.YOUR_REFERENCE_VAR.removeChild (spr);
    

    我希望这会有所帮助。

    【讨论】:

    • 非常感谢^^这对我有帮助。
    • 不过有个小问题^^" 怎么控制addChild的顺序,因为我addChild是从很多AS文件T_T
    • 请记住,当您使用 addChild 时,该子项始终位于显示列表的顶部。如果要更改特定子项的索引,请使用 setChildIndex(yourChild, whatIndex)。请记住,您可以使用 numChildren 获取孩子的总数。所以你可以像这样在列表的顶部设置一个特定的孩子... setChildIndex(yourChild, numChildren-1);
    • 或者你 addChildAt() 将一个孩子添加到特定深度。
    【解决方案2】:

    您可以通过引用传递您的影片剪辑。这是一个简单的例子:

    package {
        import flash.display.MovieClip;
        import flash.display.Sprite;
    
        public class Main extends Sprite {
            public function Main() {
                //create your movie clip
                var movieClip:MovieClip = new MovieClip();
                //if your MovieClip is in the Flash IDE library setup an export name and do
                //var flasLibraryMovieClip : YourMovieClipExportName = new YourMovieClipExportName()
    
                //add your movie clip to the display list
                addChild(movieClip);
    
                //instantiate your second class
                //and pass the movie clip to the class constructor
                var test : Test = new Test(movieClip);      
            }
        }
    }
    
    
    package {
        import flash.display.MovieClip;
        import flash.display.Sprite;
    
        public class Test extends Sprite {
            public function Test(movieClip : MovieClip) {
                //do stuff with the movie
            }       
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2015-07-07
      • 2017-06-24
      • 2018-01-13
      • 1970-01-01
      • 2014-09-23
      相关资源
      最近更新 更多