Главная страница
Навигация по странице:

  • Динамическое создание элементов управления.

  • Пакеты располагаются в папке с таким же именем

  • Классы располагаются в файле с таким же именем

  • Класс photo

  • Класс photogallery

  • Римеры скриптов на Action Script 3


    Скачать 62.64 Kb.
    НазваниеРимеры скриптов на Action Script 3
    Дата18.06.2022
    Размер62.64 Kb.
    Формат файлаdocx
    Имя файлаlektsia_27_rimery_skriptov_na_Action_Script_3.docx
    ТипДокументы
    #600932

    римеры скриптов на Action Script 3



    Вернуться в примеры скриптов

    Динамическое создание элементов управления.

    С появлением ActionScript 3.0 происходит постепенный отказ от программирования на временной шкале и перемещение программного кода в отдельные файлы с расширением .as. Кратко напоминаем правила именования и расположения файлов: если используются именованные пакеты, то файл должен находиться в папке с таким же именем, т.е. если в файле используется пакет gallery, то этот файл должен находиться в одноименной папке

    Пакеты располагаются в папке с таким же именем

    package gallery {

      // ...

      // Файл с таким пакетом помещается в папку gallery

      // ...

    }

    Класс должен находиться в файл с таким же именем, т.е. класс photo должен находиться в файле photo.as

    Классы располагаются в файле с таким же именем

    package gallery {

      // ...

      // Файл с таким пакетом помещается в папку gallery

      // ...

      public class photo extends Sprite {

         // ...

         // Файл с таким классом должен находиться в файле gallery/photo.as

         // ...

      }

    }

    На рисунке ниже представлено то, чего мы хотим добиться, 12 динамически сформированных прямоугольников. Каждому из 12 объектов назначено событие CLICK и MOUSE_OVER, по которым в область отладки будут помещаться строки, сигнализирующие о возникновении событии и номер объекта, в котором событие произошло. В реальном классе можно реализовать более полезную функциональность.



    В проекте будет один пакет gallery и два класса gallery.photogallery – который обслуживает fla-файл gallery.fla и класс gallery.photo – который формирует один синий прямоугольник. Обратите внимание на компоновку проекта: AS-файлы находятся в папке gallery их имена совпадают с именами классов. В свойствах fla-файлы мы ссылаемся на класс gallery.photogallery, который будет главным классом проекта.



    Начнем с класса прямоугольника photo. Наследуем его от Sprite, передавая конструктору шесть параметров: id – уникальный идентифиатор, для которого в классе предусмотрен закрытая переменная, доступ к которой можно получить через открытый метод getID(). Два следующих параметра – координаты левого врехнего угла: x и y. Следующие два параметра: ширина width и высота height. Последний необязательный параметр задает цвет заливки, который устанавливается синим (0x0000FF). В конструкторе задаются два события MOUSE_OVER и CLICK, которые ничего не делают кроме отправки отладочной информации при помощи функции trace().

    Класс photo

    package gallery {

      import flash.display.*;

      import flash.events.*;
      public class photo extends Sprite {

        // Номер элемента

        private var id:int = 0;

        // Конструктор

        public function photo(

          id:int,

          x:int,

          y:int,

          width:int,

          height:int,

          color:uint = 0x0000FF):void

        {

          // Уникальный номер элемента

          this.id = id;

          // Параметры прямоугольника

          // Рамка

          this.graphics.lineStyle(1);

          // Цвет

          this.graphics.beginFill(color);

          // Отрисовываем прямоугольник

          this.graphics.drawRect(x, y, width, height);

          // Вешаем обработчики событий

          this.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); 

          this.addEventListener(MouseEvent.CLICK, onMouseClick);

        }

        // Возвращаем номер элемента

        public function getID():int{

          return this.id;

        }

        // Обработчик MOUSE_OVER 

        public function onMouseOver(e:MouseEvent):void {  

          trace("Событие MOUSE_OVER ", this.getID());

        } 

        // Обработчик MOUSE_CLICK 

        public function onMouseClick(e:MouseEvent):void {  

          trace("Событие MOUSE_CLICK", this.getID());

        }

      }

    }

    Теперь имеется возможность создать 12 объектов класса photo. Так как нам необходимо создать три ряда по 4 объекта, удобно воспользоваться вложенным циклом, вычисляя на каждой итерации координаты смещения объекта и его уникальный идентификтор id.

    Класс photogallery

    package gallery{

      import flash.display.*;
      public class photogallery extends Sprite {

        // Конструктор

        public function photogallery():void{

          // Высота

          var mHeight:int = 70;

          // Ширина

          var mWidth:int = 50;

          // В цикле создаем 4 x 3 объекта photo

          var item:Array = new Array();

          // Уникальный идентификатор элемента

          var id:int = 0;

          // Координата X

          var mX:int = 0;

          // Координата Y

          var mY:int = 0;

          // Создаем 12 динамических элементов

          for(var i:int = 0; i < 4; i++){

            for(var j:int = 0; j < 3; j++){

              // Вычисляем уникальный идентификатор

              // от 0 до 11

              id = i*4 + j;

              // Координата X

              mX = 10 + (10 + mWidth)*i;

              // Координата Y

              mY = 10 + (10 + mHeight)*j;

              // Создаем элемент

              item[id] = new photo(id, mX, mY, mWidth, mHeight);

              // Добавляем элемент на канву

              this.addChild(item[id]);

            }

          }

        }

      }

    }


    написать администратору сайта