В этом уроке мы создадим несложный веб-сайт новостей, при этом вы научитесь использовать динамические данные. Начнем мы с создания объектов и переменных, в которых будет храниться информация для нашего сайта. Затем мы создадим массивы для группировки родственной информации. Ну, а когда информационная структура будет готова, мы создадим на сцене текстовые поля для отображения информации на экране.
В этом уроке:

Сводки погоды и новостей в нашем проекте будут генерироваться в виде структурированных динамических данных.
На выполнение этого урока требуется примерно один час.
Файлы-носители:
Нет
Стартовые файлы:
Lesson07/Assets/newsFlash1.fla Законченные проекты: newsFlash5.fla
Каждый монтажный стол в проекте может содержать собственный набор переменных – так сказать, контейнеров для хранения информации (данных). Создавая переменную, вы должны дать ей название, имя, изменить которое впоследствии будет нельзя; при этом содержимое переменной вы можете изменять. Синтаксис создания переменной таков:
myFullName = "Jobe Makar";
То, что стоит слева от знака равенства,
Примечание Вы можете дать переменной любое имя, удовлетворяющее следующим правилам: имя не должно начинаться с цифры, не должно содержать пробелов, а также @, #, $, % и тому подобных) и знаков препинания.
Совет Обычно переменным присваивают имена, соответствующие их содержимому – например, numberOfDays, favoriteDogsName, totalTax и так далее – так гораздо проще держать их в памяти, используя в проекте.
После того, как переменная создана и получила значение, это значение можно использовать в любом скрипте, просто сославшись на
favoriteNumber = 66;
Мы создали переменную с именем favoriteNumber и присвоили ей значение 66. Использовать ее значение в скрипте можно следующим образом:
on(release) {
gotoAndPlay (favoriteNumber); // Монтажный стол перемещается к кадру 66
cat._xscale = favoriteNumber; // Фильм-символ cat масштабируется по
вертикали до 66% своего размера
}
Вы видите, в чем состоит сила переменных – в универсальности; это информация, доступная любому скрипту. Если значение переменной изменится, соответственно изменится и результат выполнения скриптов, использующих текущее значение этой переменной.

Существует три основных
Строковое значение – это текст. Например, myFullName = "Jobe Makar" – это присвоение значения строкового типа. Строки обычно используются для хранения всевозможных надписей, например: lastestNews = "Мы приобрели щенка!". На то, что значение относится к myFavoriteNumber = "27" переменной присваивается строковое значение, то есть надпись "27", но не число 27.
Булевы, или логические, значения – это true (истинно) или false (ложно), например:
playMusic = true;
В программировании булевы значения часто используются для индикации чего-то такого, что может иметь два состояния (как, например, включено – выключено). Скрипт может проверить текущее состояние (включено или выключено, истинно или ложно) и поступить соответственно. Предположим, вы решили создать во Flash-фильме кнопку включения/выключения музыки, тогда вам может пригодиться musicPlaying = true либо musicPlaying = false ). К кнопке можно присоединить скрипт, который, при нажатии кнопки, будет проверять, играет ли музыка в данный момент ( true или false ). Если музыка включена, ( musicPlaying = true ), то скрипт должен выключить ее и изменить значение переменной на false. Если же музыка выключена, ( musicPlaying = false ), то скрипт поступит наоборот – включить музыку, а переменной присвоит значение true. Таким, образом значение переменной musicPlaying будет меняться между true и false при каждом нажатии кнопки.
Примечание В Уроке 9 – Использование логических условий будет более подробно рассказано о булевых значениях и их использовании.
Числовые значения в точности соответствуют своему названию – это обычные числа. Ну, как и для чего использовать числа, наверное, объяснять не надо. Продемонстрируем лишь, как присвоить переменной числовое значение:
radius = 32;
Вместо присвоения переменным "прямых" значений (констант, или литералов) – например, 32, "dog", или чего-либо в этом роде – можно использовать выражения. Выражение составляется из переменных, чисел, строк, операторов, функций; в результате его вычисления должно получиться некоторое значение – строковое, числовое или булево. Например:
bottlesOfBeerOnTheWall = 99; oneFellDown = 1; bottlesLeft = bottlesOfBeerOnTheWall - oneFellDown;
В третьей строке этого скрипта в качестве значения, присваиваемого переменной bottlesLeft, использовано выражение. В выражение подставляются значения переменных (99 и 1), затем выполняется вычитание. В результате переменной bottlesLeft присваивается значение 98. Следует заметить, что в зависимости от того, как и из каких компонентов построено выражение, результатом может быть либо число, либо строка, либо булево значение.
Присваивая значения переменным, не стоит использовать слишком длинные выражения. Давайте рассмотрим еще такой пример:
someone = "Jobe Makar"; coffeeBoy = someone;
В данном примере в первой строке создается переменная с именем someone. Во второй строке переменной coffeeBoy присваивается значение "Jobe Makar" – путем ссылки на переменную someone. Если впоследствии значение someone изменится, на coffeeBoy это не отразится.
Примечание Также переменная может получить значение в результате выполнения функции. Подробнее об этом смотри в Уроке 5 – Применение функций.
Flash-проекты могут содержать много монтажных столов, каждый из которых может иметь свой набор динамических данных (переменные, массивы и т.п.). Данные будут находиться на том монтажном столе, куда вы поместите их при создании. Следующая строка скрипта создает переменную (с именем myVariable ) в текущем фильме:
myVariable = 100;
А следующая строка создает переменную myVariable на корневом, или главном, монтажном столе:
_root.myVariable = 100;
Как видите, здесь при создании переменной использована адресация. Таким манером можно создавать данные (или обращаться к ним) на любом монтажном столе.

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

// ----Monday-------- monday = new Object(); monday.date = "Monday, August 20 2001"; // ----Tuesday-------- tuesday = new Object(); tuesday.date = "Tuesday, August 21 2001";
С целью структурирования данных для этого приложения мы используем объекты – название каждого из них будет соответствовать одному из дней недели; в этих объектах будут храниться новости каждого дня. В упражнении мы ограничимся объектами только для понедельника и вторника (Monday и Tuesday), поскольку для остальных дней недели все работает точно так же.
Итак, этим скриптом, помещенным в кадр 1 основного монтажного стола, мы создали два объекта – monday и tuesday. К каждому из этих объектов мы добавили переменную (или свойство объекта) date, в которой будет храниться дата каждого из дней.
Итак, первые переменные мы создали. В следующем упражнении создадим еще.
Представьте себе, что вы создаете список приглашенных гостей. В
name1 = "John Smith"; name2 = "Kelly McAvoy"; name3 = "Chris Taylor"; name4 = "Tripp Carter";
Предположим, Келли сообщила вам, что не сможет прийти на вечеринку. Поскольку гостей остается только трое, вам придется переименовать все переменные, идущие после ее имени, сдвинуть список вверх. Однако это утомительное дело можно упростить – как и многие подобные задачи, связанные с хранением данных и манипулированием ими – используя массив.
Массив – это, так сказать, суперпеременная: тогда как обычная переменная может содержать лишь одно значение, в массив можно поместить много значений; например, весь наш список гостей можно поместить в один массив.
Однако чтобы воспользоваться массивом, его нужно сначала создать. А поскольку массив является объектом, то создается он посредством конструктора объекта Array. Синтаксис таков:
myArray = new Array();
Уже при создании вы можете наполнить массив значениями (перечислив их через запятую):
guestList = new Array("John Smith","Kelly McAvoy","Chris Taylor","Tripp Carter");
Или можно использовать
guestList = ["John Smith","Kelly McAvoy","Chris Taylor","Tripp Carter"];
Каждому значению в массиве соответствует его номер, называемый индексом: 0, 1, 2 и так далее. В нашем примере "John smith" имеет индекс 0, у "Kelly McAvoy" индекс 1, и так далее. Для доступа к нужному значению массива применяется следующий синтаксис:
myFavoriteGuest = guestList[1];
Здесь переменной myFavoriteGuest будет присвоено значение "Kelly McAvoy", поскольку именно это значение содержится в элементе с индексом 1 массива guestList.
Созданный нами массив guestList содержит четыре элемента. Элементы можно добавлять и изменять в любое время, для этого просто нужно обратиться к нужному элементу. Например, следующий скрипт изменит значение элемента с индексом 2 с "
guestList[2] = "Kris Tailor";
Элемент массива может содержать данные любого типа – строки, числа, булевы значения, а то и целые объекты. Элементом массива может быть даже другой массив. В последующих уроках вы узнаете больше о массивах и о методах объекта Array. А для начала, в следующем упражнении, мы будем использовать массивы для хранения групп данных, связанных между собой.
monday.weather = new Array(); monday.weather[0] = "rainy"; monday.weather[1] = "Очень сыро"; monday.weather[2] = 85; monday.weather[3] = 62;

Мы только что создали массив weather, в котором будем хранить информацию о погоде. Этот массив находится в объекте monday. Запомните это: всю информацию, относящуюся к понедельнику, мы помещаем в объект monday.
На графической сцене вы видите небольшой значок, иллюстрирующий состояние погоды (сейчас он изображает солнце). Этот значок – экземпляр фильма-символа, и его монтажный стол содержит три метки, соответствующие трем картинкам, иллюстрирующим различные погодные условия. Метки называются sunny, rainy и stormy. Впоследствии для перевода этого экземпляра к кадру с нужной меткой мы будем использовать первый элемент (с индексом 0) массива weather.
Здесь мы присвоили этому элементу значение "rainy" – предполагается, что был понедельник дождливым днем. Второй элемент массива weather содержит комментарий погоды понедельника – он будет впоследствии отображен на экране.
Третий и четвертый элементы массива weather содержат температуру воздуха (по шкале Фаренгейта) в понедельник – соответственно, самую высокую и низкую. Эти значения мы тоже впоследствии выведем на экран.
Итак, мы создали массив из четырех элементов, содержащих родственную информацию, к которой легко будет получить доступ.

tuesday.weather = new Array(); tuesday.weather[0] = "sunny"; tuesday.weather[1] = "Прекрасный денек!"; tuesday.weather[2] = 90; tuesday.weather[3] = 73;
Мы создаем еще один массив с именем weather, только на сей раз он находится в объекте tuesday. Он содержит информацию о погоде на вторник. Первый элемент теперь содержит значение "sunny", так что значок – экземпляр фильма-символа – будет изображать солнышко. Значения всех элементов этого массива отличаются от значений такого же массива для понедельника, но индексы соответствуют друг другу: к примеру, значения наиболее высокой температуры для понедельника и вторника различны, однако оба значения находятся в элементах с индексом 2.
Информацию о погоде мы подготовили и структурировали, теперь можем взяться за другие
monday.entertainment=new Array(); monday.entertainment[0]="MTV is 20!"; monday.entertainment[1]="The popular TV network MTV has now been on the air for 20 years...."; monday.entertainment[2]="Jobe Makar"; monday.politics=new Array(); monday.politics[0]="Jesse Ventura Wins"; monday.politics[1]="Former WWF wrestler Jesse Ventura is elected governor of Minnesota..."; monday.politics[2]="Happy Camper"; monday.sports=new Array(); monday.sports[0]="Head Tennis"; monday.sports[1]="The Head Atlantis tennis racquet is one of the most popular raquets in history...."; monday.sports[2]="Jane Doe"; monday.technology=new Array(); monday.technology[0]="BajillaHertz Processors!"; monday.technology[1]="The bajillaHertz processor has just hit the shelves and is faster than light..."; monday.technology[2]="John Doe";
Наш новостной сайт будет иметь четыре информационных раздела: Развлечения, Политика, Спорт и Технологии (им соответствуют четыре кнопки с левой стороны). Для каждого из этих разделов мы создали массив и поместили в него информацию на понедельник. Для первого раздела мы подготовили массив . Его первый элемент содержит заголовок статьи новостей, второй элемент – саму статью, а третий элемент – имя автора. Массивы politics, sports и содержат такую же информацию (заголовок, статья и автор) для прочих разделов.
Пока что мы не обращаемся к этой информации (мы планируем делать это впоследствии), однако мы заранее построили логически структурированную, объектно-ориентированную систему, с которой в дальнейшем было бы удобно работать.
tuesday.entertainment=new Array(); tuesday.entertainment[0]="Amazing Sci-Fi"; tuesday.entertainment[1]="Sentrillion Blazers is the must see sci-fi moive of the year!..."; tuesday.entertainment[2]="Jobe Makar"; tuesday.politics=new Array(); tuesday.politics[0]="Tax Refund"; tuesday.politics[1]="Bush issues large tax refund...."; tuesday.politics[2]="John Doe"; tuesday.sports=new Array(); tuesday.sports[0]="Ryder Cup Begins"; tuesday.sports[1]="The European golf tournament you have been waiting for has just begun...."; tuesday.sports[2]="Jane Doe"; tuesday.technology=new Array(); tuesday.technology[0]="KatrillaHertz Processor"; tuesday.technology[1]="The katrillahertz processor just out and is twice as fast as the bajillahertz chip...."; tuesday.technology[2]="John Doe";
Этот скрипт содержит заголовки, статьи и имена авторов новостей по всем четырем разделам на вторник. Имена массивов и вообще вся структура информации – такие же, как для понедельника, отличаются лишь сами данные.
Итак, мы создали
Во Flash имеется три типа текстовых полей:
Статичный текст мы помещаем на сцену при помощи инструмента Текст (Text). Однако используются такие поля нечасто, поскольку после того, как SWF файл создан и опубликован, уже нельзя изменить вид и размер шрифта, содержание надписи и прочие параметры статичного текстового поля. На веб-сайте, например, статичный текст годится для заголовков, навигационных кнопок и тому подобного.
Поле для ввода текста – это область, в которую пользователь может вводить текст во время работы приложения. Такие поля обычно используют, когда нужно получить от пользователя какую-либо информацию, которая затем может быть использована в фильме или отправлена на сервер для обработки.
Динамическое текстовое поле – это область на сцене, которую можно заполнить текстом во время выполнения приложения – это означает, что надпись можно изменить, в ходе проигрывания фильма. Также
Примечание Все находящиеся в проекте TextField. Поэтому ими можно управлять при помощи свойств и методов этого
Настройка текстовых полей делается в инспекторе Параметры (Property). Выбрав инструмент Текст и открыв инспектор
Для статичного текстового поля (Static Text) в инспекторе Параметры имеются следующие опции:

Если из списка выбран тип Input Text (поле для ввода), доступны следующие опции:
Input Text предназначено в первую очередь для ввода текста пользователем, его можно использовать и для отображения динамически генерируемого текста. Если включить опцию HTML, текстовое поле сможет интерпретировать код HTML 1.0 (теги форматирования шрифта и т.п.), если он встретится в тексте.
Все опции полей типа Input Text доступны также и для , последние, кроме того, имеют дополнительную опцию
В следующем упражнении мы займемся созданием всех необходимых текстовых полей для нашего веб-сайта
В этом кадре размещено графическое оформление сайта . В правом верхнем углу сцены имеются две стрелки, одна направлена вверх, другая – вниз. Здесь будет отображаться температура воздуха – минимальная и максимальная в течение дня. Справа внизу находится фильм-символ, содержащий буквы M T W T F; каждая буква соответствует одному из рабочих дней недели.

На протяжении нескольких следующих шагов мы будем создавать в разных местах сцены
Это текстовое поле будет отображать информацию о погоде в этот день. Текст, который будет динамически помещаться в это поле, должен отображаться белым цветом, поэтому выберите в инспекторе Параметры белый цвет. Кстати, во всех текстовых полях нашего проекта текст будет либо белым, либо черным. Убедитесь, что установлен режим

Это текстовое поле готово. Как только weatherBlurb.text на основном монтажном столе получит значение, это значение (текст) немедленно отобразится в текстовом поле.
Это текстовое поле будет отображать заголовок статьи новостей.
В этом текстовом поле будет отображаться сама статья. Информация в этом поле будет обновляться при изменении значения на основном монтажном столе.
Информация, отображаемая в этом текстовом поле, будет зависеть от значения, содержащегося в .
В этом поле будет отображаться календарная дата того дня, к которому относятся просматриваемые новости.
В этих полях будет отображаться максимальная и минимальная температура.

Итак, мы разместили на сцене все, что необходимо для отображения динамических данных. Однако нам нужно еще "достать из хранилищ" информацию и заполнить ею наши текстовые поля.
Прежде мы создали архитектуру хранения данных, и теперь нам нужно разработать способ получения необходимой информации из наших хранилищ. Для этого нам понадобится освоить некоторые новые синтаксические конструкции – динамическую адресацию с точкой и применение квадратных скобок.
Предположим, у нас есть три переменные, содержащие звуки, издаваемые животными:
dog = "гав"; cat = "мяу"; duck = "кря";
Далее мы создаем новую переменную и присваиваем ей строковое значение "dog", "
currentAnimal = "dog";
И теперь, используя следующий синтаксис, мы можем получить значение переменной с именем dog:
animalSound = this[currentAnimal];
Здесь переменной animalSound будет присвоено значение "гав". Выражение в правой части интерпретируется следующим образом. Сначала проверяется значение currentAnimal – выясняется, что она содержит строковое значение "dog". Видя, что имя currentAnimal заключено в квадратные скобки,
animalSound = this.dog;
Поскольку dog имеет значение "гав", такое значение и присваивается animalSound. Если бы мы изменили значение currentAnimal на "animalSound было бы присвоено значение "мяу".
Обратите внимание на термин this, использованный в выражении динамического получения имени переменной. Он указывает, что обе переменные – указанная в квадратных скобках (в нашем случае – currentAnimal ) и стоящая слева от знака равенства ( animalSound ) находятся на одном монтажном столе. Если бы animalSound находилась на монтажном столе некоторого фильма-символа, тогда как currentAnimal – на основном монтажном столе, следовало бы использовать такую адресацию:
animalSound = _root[currentAnimal]; Вот еще пара примеров: animalSound = _parent[currentAnimal]; animalSound = myMovieClip[currentAnimal];
Эта синтаксическая конструкция очень важна для нас; в следующем упражнении мы будем использовать ее для получения нужной информации из наших объектов. Как вы помните, все наши объекты имеют одинаковую структуру, содержат массивы с одинаковыми именами; различаются лишь номера самих объектов ( monday и tuesday ). А значит, для доступа к хранящимся в объектах данным нам будет очень удобно применить описанный здесь синтаксис.
day="monday"; section="entertainment";

Мы желаем, чтобы сразу после начала воспроизведения фильма были отображены новости понедельника из раздела . Эти две переменные помогут нам этого добиться, а каким образом – вы увидите на следующем шаге!
Примечание Такие переменные называют инициализирующими. Информация, отображаемая в нашем приложении, зависит от действий пользователя, поэтому эти переменные задают некие начальные установки (отображаемые пока пользователь не предпримет какие-либо действия).
date.text = this[day].date;
Здесь использован синтаксис, который мы обсуждали перед началом упражнения. Переменная date.text будет получать значение из другой переменной, имя которой определяется динамически. Поскольку изначально имеет значение "monday" (это мы установили на предыдущем шаге),
date.text = monday.date;
Как вы помните, monday.date содержит строковое значение "Monday, August 20 2001", a date – имя текстового поля, которое мы поместили в левой нижней части сцены. Таким образом, в результате выполнения этого действия в текстовом поле date будет отображен текст "Monday, August 20 2001".
Ну что, начинаете понимать, какова польза динамического указания имен переменных? Если бы переменная tuesday.
А сейчас вы поймете, почему мы поместили это действие в кадр с меткой
days.gotoAndStop(day); icon.gotoAndStop(this[day].weather[0]); weatherBlurb.text=this[day].weather[1];

Результаты этих трех действий также зависят от текущего значения переменной (которая получила начальное значение на шаге 1). Давайте разберемся.
Экземпляр фильма-символа под названием , расположенного в правом нижнем углу сцены, содержит пять кнопок (M, T, W, T, F), позволяющих пользователю выбрать день недели, новости которого он желает просмотреть. На монтажном столе этого фильма-символа имеется пять меток ("Monday", "Tuesday" и так далее) – по одной на каждый день недели, кроме выходных. На каждой из этих меток тот или иной день недели (буква на кнопке) выделен желтым цветом. Первая строка скрипта, который мы только что ввели, указывает экземпляру фильма-символа перейти к кадру, который имеет метку, соответствующую значению переменной . В данном случае, поскольку начальное значение – "monday", желтым цветом будет отображена буква M.

Значок, символически изображающий погодные условия (экземпляр с именем ) содержит три метки, по одной для каждого "вида" погоды ("Sunny", "Stormy", "Rainy"). Как вы помните, элемент с индексом 0 массива weather в объектах monday и tuesday содержит одно из этих трех значений. Таким образом, вторая строка скрипта динамически получает это значение из массива weather нужного объекта и переводит экземпляр клипа к нужному кадру. Нашу строку
icon.gotoAndStop(this[day].weather[0]);
Flash расшифровывает как
icon.gotoAndStop(this.monday.weather[0]);
И далее, поскольку monday.weather[0] имеет значение "rainy":
icon.gotoAndStop("rainy");
Подобным же образом последняя строка скрипта помещает в текстовое поле weatherBlurb значение monday.weather[1], которое равно "Very
Еще раз напомним, что если бы переменная имела значение "Tuesday", то эти действия выполнялись бы с соответствующими значениями из объекта tuesday.
high.text = this[day].weather[2]; low.text = this[day].weather[3];
Используя ту же синтаксическую конструкцию, что и на предыдущем шаге, заполняем текстовые поля и значениями, соответственно, второго и третьего элементов массива weather.
headline.text = this[day][section][0]; article.text = this[day][section][1]; author.text = this[day][section][2];

Здесь динамические ссылки еще более усложнились. Мы пытаемся динамически сослаться сразу на объект и на массив из этого объекта – день может быть понедельником либо вторником, а раздел – section = ". C этими начальными значениями Flash расшифрует наши три строки так:
headline.text = this.monday.entertainment[0]; article.text = this.monday.entertainment[1]; author.text = this.monday.entertainment[2];
От текущего значения переменной section зависит заполнение только трех экземпляров текстовых полей: и .
Нам ни к чему, чтобы фильм был зациклен и крутился по кругу. Нам нужно, чтобы фильм, после инициализации данных в кадре 1, перешел к кадру с меткой и заполнил текстовые поля на экране. После этого фильм должен остановиться на кадре с меткой .
Как видим, текстовые поля на экране заполнены информацией, относящейся к понедельнику, к разделу . Значок (фильм-символ) погоды изображает дождевую тучу, в экземпляре фильма-символа (справа внизу) высвечена буква M (означающая Monday ).
on (release) {
section = "entertainment";
this.gotoAndPlay("refresh");
}

Если эту кнопку нажать и отпустить, то переменной section будет присвоено значение "
on (release) {
section = "politics";
this.gotoAndPlay("refresh");
}
То же самое, что и для предыдущей кнопки, только переменной section присваивается значение "politics".
on (release) {
section = "sports";
this.gotoAndPlay("refresh");
}
Опять скрипт, идентичный двум предыдущим, но на этот раз section получает значение "sports".
on (release) {
section = "technology";
this.gotoAndPlay("refresh");
}
Переменная section получает значение "
Как видите, информация в текстовых полях меняется без проблем. Если захочется добавить еще разделов и статей, это можно легко сделать при помощи все той же объектно-ориентированной техники.
on (release) {
_parent.day = "monday";
_parent.gotoAndPlay("refresh");
}

Для кнопки, расположенной над буквой T (вторник) во второй строке скрипта следует написать _parent.. Этот скрипт похож на тот, что мы использовали для смены разделов: он изменяет значение переменной
Как видите, все кнопки в этом проекте используются для изменения значений одной из двух переменных – или section. После этого фильм отсылается к кадру с меткой . А поскольку этот кадр содержит скрипты, заполняющие все текстовые поля, информация на экране обновляется в соответствии с текущими значениями и section.
Итак, мы запрограммировали все так, что можно легко добавлять объекты-дни, не изменяя код, отвечающий за вывод данных на экран.
Мы завершили наш проект, в котором отображаемая информация извлекалась динамически из структурированного хранилища. Следующим логичным шагом для подобного проекта было бы помещение всех данных в отдельную базу данных или текстовый файл, откуда можно было бы доставать информацию и переправлять в созданное нами структурированное хранилище. О загрузке данных во Flash из внешних источников и о выводе во внешние файлы мы расскажем в Уроке 11 – Ввод и вывод данных, а также в Уроке 12 – Применение XML во Flash.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.