AS3> Кнопка для отображения массивов изображений по порядку? - PullRequest
0 голосов
/ 11 ноября 2011

Насколько сложно сделать кнопку для отображения изображений в порядке, соответствующем их положению внутри массива?

Мне это нужно для СЛЕДУЮЩАЯ и ПРЕДЫДУЩАЯ кнопки.Проверьте массив ниже.

Массив:

private var images:Array = ["Layer_1.jpg", "Layer_2.jpg", "Layer_3.jpg", "Layer_4.jpg", "Layer_5.jpg", "Layer_6.jpg", "Layer_7.jpg", "Layer_8.jpg"];

Кнопка:

        private var triangleButton:triangle = new triangle;
        //to call the function slideGames
        triangleButton.addEventListener(MouseEvent.CLICK, slideGames);

Загрузчик:

    private var loader:Loader = new Loader();

Полный код:

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 = ["Layer_1.jpg", "Layer_2.jpg", "Layer_3.jpg", "Layer_4.jpg", "Layer_5.jpg", "Layer_6.jpg", "Layer_7.jpg", "Layer_8.jpg"];
        private var triangleButton:triangle = new triangle;

           public function play() {
               loader.load(new URLRequest("img/Layer_1.jpg"));
                addChild(loader);
                addChild(triangleButton);

                triangleButton.x = 600;
                triangleButton.y = 200;

                triangleButton.addEventListener(MouseEvent.CLICK, slideGames);



    function slideGames(event:MouseEvent):void
    {

    }

    }
}}

1 Ответ

1 голос
/ 11 ноября 2011

Попробуйте это:

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 = ["Layer_1.jpg", "Layer_2.jpg", "Layer_3.jpg", "Layer_4.jpg", "Layer_5.jpg", "Layer_6.jpg", "Layer_7.jpg", "Layer_8.jpg"];
    private var triangleButton:triangle = new triangle;

    public function play() {
      loadNextImage();

      addChild(loader);
      addChild(triangleButton);

      triangleButton.x = 600;
      triangleButton.y = 200;

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

Основная идея - сохранить целочисленный указатель на следующее изображение, которое вы хотите отобразить. При отображении следующего изображения увеличьте этот указатель. Если он превышает длину массива источника изображения, сбросьте его на 0.

Этот указатель начинается с -1, поэтому при первом увеличении он имеет значение 0.

Вы должны иметь возможность легко обрабатывать предыдущий случай - просто уменьшите указатель и вместо проверки, если он больше, чем длина массива, проверьте, не меньше ли он нуля, и установите его в images.length-1.

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