Как я могу связать ссылку на мувиклип в другом файле AS3? - PullRequest
0 голосов
/ 03 июля 2011

В моей основной AS я использую MovieClip в качестве контейнера, несмотря на сцену.В другом файле AS я хочу взять контейнер в качестве ссылки, а также addChild (например, маркеры и т. Д.), Но я действительно не знаю, как написать код.

Если я только добавлю addChildв текущем (подчиненном) AS он работает, но просто удалить ребенка.

Ответы [ 2 ]

2 голосов
/ 03 июля 2011

Не знаю, правильно ли я понимаю, но ....

У вас есть контейнер в вашем основном классе, и вы хотите получить к нему доступ из другого класса, верно?

Полагаю, вам нужен 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);

Надеюсь, это поможет.

0 голосов
/ 04 июля 2011

Вы можете передать свой видеоклип по ссылке.Вот краткий пример:

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
        }       
    }
}
...