AS3 > Запуск класса в определенном фрейме?

#actionscript-3 #class

#actionscript-3 #класс

Вопрос:

Я создал файл 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:

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

Итак, вместо

 public function play() {
  

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

 public function play_start() {
  

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

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

 this.play_start();
  

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

Комментарии:

1. Это было действительно полезно. Для этого нужно больше, чем просто поставить лайк, он также получает комментарий!