Динамическое присоединение компонентов
Конечно, хорошо, что любой пользователь Flash может перетащить компонент на рабочее поле из панели компонентов и настроить его параметры. А что, если вы хотите присоединить один из компонентов к рабочему полю с помощью ActionScript во время проигрывания клипа и при этом пользоваться им так же, как если бы он был просто перетянут на рабочую поверхность вручную? Давайте в качестве примера возьмем компонент Flash MX Scrollbar Component. Мы хотим иметь возможность присоединять к рабочей поверхности любое количество скроллбаров всякий раз, когда нам это понадобится, используя ActionScript. Итак, откройте Flash MX и создайте новый клип. Откройте панель компонентов и убедитесь, что набор "Flash UI Component Set" открыт, а если это не так, выберите его из списка в правом верхнем углу панели. Перетащите экземпляр компонента "ScrollBar" на рабочее поле. Это разместит в библиотеке вашего клипа все символы, необходимые для функционирования этого компонента. Сейчас мы переместимся в библиотеку вашего клипа; выберите в библиотеке главный символ для вашего компонента, в данном случае - символ компонента с именем "ScrollBar", находящийся в папке "Flash UI Components". Кликните правой кнопкой мыши на выбранном символе и выберите в появившемся меню пункт "Component Definition". В открывшейся панели в поле "Parameters" вы увидите список всех параметров, используемых выбранным в библиотеке компонентом, в нашем примере вы увидите, что компоненту "ScrollBar" для правильной работы необходимы два параметра - " Теперь, зная, что компонент "ScrollBar" нуждается для правильного функционирования в параметрах, перечисленных в панели "Component Definition", мы можем сделать кое-что сами. Параметры обладают свойствами " " Как я прежде сказал, есть два параметра, необходимых для правильного функционирования компонента "ScrollBar". Поскольку у нас не будет возможности ввести значения этих двух параметров, когда мы присоединяем символ компонента из библиотеки на рабочее поле с помощью ActionScript, нам нужно знать имена переменных для каждого из этих параметров. Беглый взгляд на панель "Component Definition" говорит нам, что это переменные Теперь нам нужно узнать тип этих параметров, мы же не хотим передавать строку в качестве параметра там, где ожидается число. Чтобы определить тип, посмотрите на атрибут " Теперь у нас есть вся необходимая информация для динамического присоединения компонента на рабочее поле с помощью ActionScript, осталась только еще одна вещь, которую нам нужно знать - это Идентификатор Связывания - " Перейдем к последнему этапу. Чтобы присоединить компонент к рабочему полю с помощью AS, нам нужен экземпляр компонента в вашей библиотеке вместе со всеми связанными файлами, также вы должны знать значение " Для присоединения компонента к рабочему полю будем использовать метод Как вы должны теперь знать, все компоненты запрашивают определенные параметры для правильного функционирования, эти параметры должны быть определены внутри символа компонента перед выполнением Конструктора (Constructor) класса компонента, и мы будем использовать четвертый аргумент метода Итак, сначала нам нужно создать наш инициализирующий объект (initialization object) с помощью ActionScript; в этом примере инициализирующий объект будет содержать два параметра для функционирования компонента "ScrollBar", initialization={_targetInstanceName:"myTextField",horizontal:false}; Теперь все, что вы должны сделать, это присоединить символ компонента с помощью ActionScript: _root.attachMovie("FScrollBarSymbol","myScrollbar",2,initialization); Как вы можете знать, компонент "ScrollBar" бесполезен без текстового поля, с которым он может быть связан, так что используем следующий код, чтобы создать стандартное текстовое поле для нашего примера: _root.createTextField("myTextField",1,0,0,100,200); И используем такой код для добавления некоторого количества текста к этому текстовому полю: for(i=1;i<=50;++i){ Понимание вышеприведенного кода - это целая отдельная статья. Итак, теперь наш код должен выглядеть следующим образом: _root.createTextField("myTextField",1,0,0,100,200); Мы поместили код создания текстового поля перед кодом для присоединения символа "ScrollBar", потому что "ScrollBar" нуждается в уже существующем текстовом поле в момент инициализации. Давайте только добавим еще одну строку кода для того, чтобы навести немного визуального порядка: myScrollBar._x=myTextField._width; Это просто передвигает скроллбар к правой стороне текстового поля. Чисто из визуальных соображений вы можете захотеть сделать скроллбар той же высоты, что и текстовое поле, это автоматически происходит в среде разработки, но вы должны сделать это вручную с помощью ActionScript, когда вы присоединяете component из библиотеки. Класс myScrollBar.setSize(myTextField._height); Окончательный код: _root.createTextField("myTextField",1,0,0,100,200); Когда вы протестируете ваш клип, то увидите полноценно функционирующее текстовое поле с прокруткой, созданное только методами ActionScript. Процесс, описанный в этой статье, применим ко всем компонентам, так что знать его весьма полезно.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=5036 |