Статьи

Краткое введение: Flash List и TileList Components

В этом кратком совете по инструментам Flash Professional на этой неделе мы рассмотрим компоненты Tile и TileList.


Откройте новый Flash-документ и установите следующие свойства:

  • Размер документа: 550×400 пикселей
  • Цвет фона: #FFFFFF

Откройте окно компонентов, перейдя в Меню> Окно> Компоненты или нажав CTRL + F7.

Перетащите две метки , один список и один компонент TileList на сцену.

На панели «Свойства» присвойте первой метке имя экземпляра «popLabel».

(Если панель «Свойства» не отображается, перейдите в «Окно»> «Свойства» или нажмите сочетание клавиш CTRL + F3.)

Установите X метки на 31,00, а Y на 26,00.

На панели «Свойства» присвойте второй метке имя экземпляра «flagsLabel». Установите X метки на 31,00, а Y на 238.

Затем присвойте экземпляру List имя «statesList» и установите для X списка значение 31,00, а для Y значение 62,00.

Наконец, присвойте TileList имя экземпляра «statesTileList» и установите для X в TileList значение 31,00, а для Y — 269,00.


Создайте новый файл ActionScript и назовите его Main.as. Мы будем объявлять наши компоненты в Main.as, так что нам нужно отключить «автоматическое объявление этапов»; Преимущество этого состоит в том, что вы получаете подсказку кода для экземпляра.

Перейдите в Меню> Файл> Параметры публикации . Нажмите Настройки рядом со Скриптом [Actionscript 3] .

Снимите флажок «Автоматически объявлять экземпляры сцены».

В Main.as откройте объявление пакета и импортируйте классы, которые мы будем использовать, добавив следующий код:

01
02
03
04
05
06
07
08
09
10
11
12
13
package {
     
     
    import flash.display.MovieClip;
    import flash.display.Loader;
    import fl.data.DataProvider;
    import fl.controls.List;
    import fl.controls.TileList;
    import fl.controls.Label;
    import flash.events.Event;
    import flash.text.TextFieldAutoSize;
    import fl.controls.ScrollBarDirection;
    import flash.net.URLRequest;

Мы добавим определение класса, расширив его до MovieClip, и настроим нашу функцию конструктора.

Добавьте следующее в Main.as:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Main extends MovieClip {
    //our List Component
    public var statesList:List;
    //our TileList Component
    public var statesTileList:TileList;
    //our Labels
    public var populationLabel:Label;
    public var flagsLabel:Label;
    //Data Providers for the list components
    var listDp:DataProvider;
    var tileListDp:DataProvider;
    //Needed to load a larger picture of the selected flag
    var picLoader:Loader;
 
    public function Main() {
    setupListDataProvider();
    setupTileListDataProvider();
    setupLabels();
    setupList();
    setupTileList();
    setupLoader();
}

Здесь мы определим функции setupListDataProvider() , setupTileListDataProvider() , setupLabels() , setupTileList() и setupLoader() , как упоминалось ранее в конструкторе.

В библиотеке вы найдете видеоклипы, названные MC «State»; они используются в качестве значка для компонента List. Вы должны установить связь для видеоклипов, чтобы они были добавлены в список. Сделайте это, щелкнув правой кнопкой мыши по мувиклипу и выбрав «Свойства». Здесь мы используем название фрагмента ролика в качестве имени класса:

Класс DataProvider дает нам простой способ настроить данные для использования компонентами.

Добавьте следующие функции в Main.as:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
private function setupListDataProvider():void{
    //This dataprovider will supply our List component
    listDp = new DataProvider();
    //Here the iconsSource is a movieClip linked in the library
    //population acts like a dynamic variable on our list
    listDp.addItem({ iconSource:alabamaMC, label:»Alabama»,population:»4661900″ });
    listDp.addItem({ iconSource:alaskaMC, label:»Alaska» ,population:»686293″ });
    listDp.addItem({ iconSource:arizonaMC, label:»Arizona»,population:»6500180″ });
    listDp.addItem({ iconSource:arkansasMC, label:»Arkansas»,population:»2855390″ });
    listDp.addItem({ iconSource:californiaMC, label:»California»,population:»36756666″ });
    listDp.addItem({ iconSource:coloradoMC, label:»Colorado»,population:»4939456″ });
    listDp.addItem({ iconSource:conneticutMC, label:»Conneticut»,population:»3501252″ });
    listDp.addItem({ iconSource:delawareMC, label:»Delaware»,population:»873092″ });
    listDp.addItem({ iconSource:floridaMC, label:»Florida»,population:»18328340″ });
    listDp.addItem({ iconSource:georgiaMC, label:»Georgia»,population:»9685744″ });
    listDp.addItem({ iconSource:hawaiiMC, label:»Hawaii»,population:»1288198″ });
    listDp.addItem({ iconSource:idahoMC, label:»Idaho»,population:»1523816″ });
    listDp.addItem({ iconSource:illinoisMC, label:»Illinois»,population:»12901563″ });
    listDp.addItem({ iconSource:indianaMC, label:»Indiana»,population:»6376792″ });
    listDp.addItem({ iconSource:iowaMC, label:»Iowa»,population:»3002555″ });
}
         
private function setupTileListDataProvider():void{
    //This dataProvider will supply our tilelist
    //The source is them image you want to show
    //fullSize acts like a dynamic variable to our tileList
    tileListDp = new DataProvider();
    tileListDp.addItem({source:»flags/alabama.gif»,fullSize:»flagsLarge/alabama.jpg»});
    tileListDp.addItem({source:»flags/alaska.gif»,fullSize:»flagsLarge/alaska.jpg»});
    tileListDp.addItem({source:»flags/arizona.gif»,fullSize:»flagsLarge/arizona.jpg»});
    tileListDp.addItem({source:»flags/california.gif»,fullSize:»flagsLarge/california.jpg»});
    tileListDp.addItem({source:»flags/colorado.gif»,fullSize:»flagsLarge/colorado.jpg»});
    tileListDp.addItem({source:»flags/connecticut.gif»,fullSize:»flagsLarge/connecticut.jpg»});
    tileListDp.addItem({source:»flags/delaware.gif»,fullSize:»flagsLarge/delaware.jpg»});
    tileListDp.addItem({source:»flags/florida.gif»,fullSize:»flagsLarge/florida.jpg»});
    tileListDp.addItem({source:»flags/georgia.gif»,fullSize:»flagsLarge/georgia.jpg»});
    tileListDp.addItem({source:»flags/hawaii.gif»,fullSize:»flagsLarge/hawaii.jpg»});
    tileListDp.addItem({source:»flags/idaho.gif»,fullSize:»flagsLarge/idaho.jpg»});
    tileListDp.addItem({source:»flags/illinois.gif»,fullSize:»flagsLarge/illinois.jpg»});
    tileListDp.addItem({source:»flags/indiana.gif»,fullSize:»flagsLarge/indiana.jpg»});
    tileListDp.addItem({source:»flags/iowa.gif»,fullSize:»flagsLarge/iowa.jpg»});
}
 
private function setupLabels():void{
    populationLabel.text =»Choose A State»;
    flagsLabel.text =»Click on flag for larger Image»;
    //Needed so our labels autosize to hold all the text
    populationLabel.autoSize = populationLabel.autoSize = TextFieldAutoSize.LEFT;
    flagsLabel.autoSize = flagsLabel.autoSize = TextFieldAutoSize.LEFT;
}
 
private function setupList():void{
    //The iconField sets what the icon will be
    //Here it uses iconSource which we defined in our dataprovider
    statesList.iconField = «iconSource»;
    statesList.width = 150;
    //set the hieght of the rows
    statesList.rowHeight = 30;
    //sets how many rows show in the List
    statesList.rowCount = 5;
    //Here we set the List’s dataProvider to the one we created earlier
    statesList.dataProvider = listDp;
    statesList.addEventListener(Event.CHANGE,getPopulation);
}
         
private function setupTileList():void{
    //set the direction of the scrollBar for the tileList
    statesTileList.direction = ScrollBarDirection.HORIZONTAL;
    statesTileList.rowHeight = 60;
    //How many columns the TileList will have
    statesTileList.columnCount =1;
    //How many rows to show in the TileList
    statesTileList.rowCount=1;
    statesTileList.width = 400;
    //Here we set the TileList’s dataProvider to the one we created
    statesTileList.dataProvider = tileListDp;
    statesTileList.addEventListener(Event.CHANGE,loadPic);
}
         
private function setupLoader():void{
    //This is the Loader we use to load the larger pics of the flags
    picLoader = new Loader();
    picLoader.x = 228;
    picLoader.y =117;
    addChild(picLoader);
}

Здесь мы закодируем наших прослушивателей событий, когда щелкает элемент в любом из списков.

Добавьте следующее в Main.as

01
02
03
04
05
06
07
08
09
10
11
12
13
14
        private function getPopulation(e:Event):void{
            //Here we get the population by grabbing the label(state) and the population
            //The selectedItem.label returns the currently selected Item in the list
            populationLabel.text = «The population for » + e.target.selectedItem.label + » is » + e.target.selectedItem.population;
        }
             
        private function loadPic(e:Event):void{
            //Here we load the fullSize pic by getting the currently selected Items fullSize var
            picLoader.load(new URLRequest(e.target.selectedItem.fullSize));
        }
 
    }//Close out the class
 
}//Close out the package

Использование компонентов List и TileList — отличный способ отобразить списки данных и изображений.

На панели «Параметры компонента» вы увидите компоненты, которые вы можете проверить и выбрать определенные свойства.

Изображение выше для компонента List, свойства которого следующие:

  • "allowMultipleSelection : логическое значение, указывающее, можно ли выбрать одновременно несколько элементов списка.
  • "dataProvider : модель данных списка элементов, которые нужно просмотреть
  • "enabled : логическое значение, которое указывает, может ли компонент принимать пользовательский ввод
  • "horizontalLineScrollSize : значение, которое описывает объем содержимого, которое необходимо прокрутить по горизонтали при нажатии стрелки прокрутки.
  • "horizontalPageScrollSize : количество пикселей, на которое можно перемещать большой палец прокрутки на горизонтальной полосе прокрутки, когда нажата дорожка полосы прокрутки.
  • "horizontalScrollPolicy : значение, которое указывает состояние горизонтальной полосы прокрутки
  • "horizontalLineScrollSize : значение, которое описывает объем содержимого, которое необходимо прокрутить по горизонтали при нажатии стрелки прокрутки.
  • "horizontalPageScrollSize : он подсчитывает количество пикселей, на которое можно перемещать большой палец прокрутки на горизонтальной полосе прокрутки, когда нажата дорожка полосы прокрутки
  • "verticalScrollPolicy : значение, которое указывает состояние вертикальной полосы прокрутки
  • "visible : логическое значение, которое указывает, является ли экземпляр компонента видимым

Свойства для TileList следующие:

  • allowMultipleSelection : логическое значение, указывающее, можно ли одновременно выбрать несколько элементов списка.
  • columnCount : количество столбцов, которые хотя бы частично видны в списке
  • columnWidth : «ширина, которая применяется к столбцу в списке, в пикселях.
  • dataProvider : модель данных списка элементов для просмотра
  • direction : значение, указывающее, прокручивается ли компонент TileList горизонтально или вертикально.
  • enabled : логическое значение, которое указывает, может ли компонент принимать пользовательский ввод
  • horizontalLineScrollSize : значение, которое описывает объем контента, который будет прокручиваться по горизонтали при нажатии стрелки прокрутки.
  • horizontalPageScrollSize : количество пикселей, на которое можно перемещать большой палец прокрутки на горизонтальной полосе прокрутки, когда нажата дорожка полосы прокрутки.
  • rowCount : количество строк, которые хотя бы частично видны в списке.
  • rowHeight : высота, которая применяется к каждой строке в списке, в пикселях.
  • scrollPolicy : «политика прокрутки для компонента TileList.
  • verticalLineScrollSize : значение, которое описывает количество пикселей для вертикальной прокрутки при нажатии стрелки прокрутки.
  • verticalPageScrollSize : количество пикселей, на которое можно перемещать большой палец прокрутки на вертикальной полосе прокрутки при нажатии дорожки полосы прокрутки.
  • visible : логическое значение, которое указывает, является ли экземпляр компонента видимым

Файлы справки — отличное место, чтобы узнать больше об этих свойствах.

Чтобы увидеть свойства меток, обязательно ознакомьтесь с кратким советом по компонентам «Кнопка» и «Метка» .

Спасибо http://www.state-flags-usa.com за предоставленную мне возможность использовать их изображения флагов.

Спасибо за чтение и следите за будущими учебниками по компонентам!