AS3> Начальный класс на определенном кадре? - PullRequest
0 голосов
/ 11 ноября 2011

Я создал файл AS и использовал его как класс, внутри него я назвал кнопки и изображения слайд-шоу.

После этого я решил создать вступление, переместив временную шкалу. Моя проблема в том, что все объекты отображаются с самого первого кадра, есть ли способ заставить весь класс начать после определенного кадра?

Код для справки:

    package {

  import flash.display.Loader;
  import flash.net.URLRequest;
  import flash.events.Event;
  import flash.display.Sprite;
  import flash.events.MouseEvent;
  import flash.display.MovieClip;


  public class play extends MovieClip {

    private var loader:Loader = new Loader();

    private var images:Array = ["img/Layer_1.jpg", "img/Layer_2.jpg", "img/Layer_3.jpg", "img/Layer_4.jpg", "img/Layer_5.jpg", "img/Layer_6.jpg", "img/Layer_7.jpg", "img/Layer_9.jpg", "img/Layer_10.jpg", "img/Layer_11.jpg", "img/Layer_12.jpg", "img/Layer_13.jpg", "img/Layer_14.jpg"];
    private var triangleButton:triangle = new triangle;
    private var squareButton:square = new square;
    private var crossButton:cross = new cross;
    private var circleButton:circle = new circle;


    public function play() {
      loadNextImage();

      addChild(loader);
      loader.x = 137;
      loader.y = 65;

      //Buttons
      addChild(triangleButton);
      triangleButton.width = 28;
      triangleButton.scaleY = triangleButton.scaleX;
      triangleButton.x = 804;
      triangleButton.y = 107;
      triangleButton.addEventListener(MouseEvent.CLICK, slideGames);


      addChild(circleButton);
      circleButton.width = 28;
      circleButton.scaleY = circleButton.scaleX;
      circleButton.x = 825;
      circleButton.y = 130;
      circleButton.addEventListener(MouseEvent.CLICK, slideGames);

      addChild(crossButton);
      crossButton.width = 28;
      crossButton.scaleY = crossButton.scaleX;
      crossButton.x = 804;
      crossButton.y = 155;
      crossButton.addEventListener(MouseEvent.CLICK, slideGames);

      addChild(squareButton);
      squareButton.width = 28;
      squareButton.scaleY = squareButton.scaleX;
      squareButton.x = 780;
      squareButton.y = 130;
      squareButton.addEventListener(MouseEvent.CLICK, slideGames);


    }
    public function slideGames(event:MouseEvent):void {
      loadNextImage();
    }

    public function loadNextImage() : void {
      // Increment the image
      _imageIndex++;

      // If we've reached the end of the array, start over
      if (_imageIndex >= images.length) {
        _imageIndex = 0;
      }

      // Now get the image source from the array and tell the loader to load it
      var imageSource : String = images[_imageIndex] as String;
      loader.load(new URLRequest(imageSource));
    }
    // Next image to display
    protected var _imageIndex : int = -1;
  }
}

1 Ответ

3 голосов
/ 11 ноября 2011

Да, вместо того, чтобы инициализировать все в конструкторе вашего класса (play()), вы можете переместить его в другую функцию и вызвать это из временной шкалы. Я предполагаю, что вы используете класс play в качестве класса документа.

Так что вместо

public function play() {

вы бы переименовали его в

public function play_start() {

Создайте пустой конструктор с именем play(), если хотите.

В Flash IDE выберите рамку, в которой вы хотите, чтобы элементы отображались, затем создайте там ключевой кадр. Выберите ключевой кадр и перейдите на панель «Действия» (F9) и введите следующий код:

this.play_start();

как только точка воспроизведения окажется на ключевом кадре, ваш код должен быть выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...