Уроки Flash: Создание информераИсточник: demiart MOHCTEP
Добрый всем час, дорогие друзья!
Подготовка
В процессе выбора между текстовым и мнемоническим вариантами информера, мною был создан этакий мутант с сознательным нарушением дизайнерских канонов. Перенасыщенность информацией обусловлена моим желанием показать вам оба варианта, «в одном флаконе». Я создал новый однокадровый документ с 4 слоями размерами 200х150 и расположил элементы и объекты, как на рисунке. На слое "as" расположен код На слое "pics" расположены 2 мнемонических клипа, показывающие: первый - состояние облачности и осадков, а второй - направление ветра. На слое "bg" расположена верхняя подложка под названием города На слое "txt" расположены текстовые поля, их инстансы вы видите на рисунке, а также кнопка со ссылкой на сайт Gismeteo.ru. Клип-флюгер имеет инстанс «wind» и состоит из 2 слоев. На нижнем слое нарисован компас, а в верхнем расположен клип со стрелкой направленной вверх, имеющей точку регистрации посередине и инстанс «arrow». Погодный клип с инстансом «weather», тоже имеет 2 слоя. В нижнем слое расположен клип с картинками облачности и инстансом «cloudiness», в верхнем - клип с картинками осадков и инстансом «precipitation».Разобраться в структуре этого «бутерброда», вы сможете здесь. Полупрозрачные бирюзовые области - кликабельны. Теперь нам осталось, на главной сцене проекта выделить кадр на слое "as" и нажать «F9», вызвав панель «Actions for Frame».
Программирование
Если вы рассмотрите исходную xml страничку, полученную с Gismeteo.ru, по, выбранной вами, ссылке, то вы увидите, что основную информацию содержат 4 «потомка» с одинаковой структурой, но разными значениями узлов. Каждый потомок информирует о состоянии погоды в определенное время суток. CODE /*******Инстансы динамических текстовых полей******** city - Название города today - Прогнозируемые дата и время суток phenomena - Облачность и осадки termo - Температура воздуха pressure - Атмосферное давление relwet - Относительная влажность windspeed - Скорость ветра *********Свойства объекта-хранителя текущего состояния погоды********* o.today - Дата o.daytime - время суток o.cloudsNum - Индекс облачности o.cloudsStr - Облачность o.precipitationNum - Индекс осадков o.precipitationStr - осадки o.power - возможность осадков o.pressureMin - Минимальное давление o.pressureMax - Максимальное давление o.thermoMin - Минимальная температура o.thermoMax - Максимальная температура o.wind_dir - Индекс направления ветра o.windMin - Мин. скорость ветра o.windMax - Макс. скорость ветра o.relwetMin - Мин. относительная влажность o.relwetMax - Макс. относительная влажность ********************************************/ //Направление ветра var wind_dir:Array = ['северный', 'северо-восточный', 'восточный', 'юго-восточный', 'южный', 'юго-западный', 'западный', 'северо-западный']; //Облачность var clouds:Array = ['Ясно', 'Малооблачно', 'Облачно', 'Пасмурно']; //Осадки var precipitation:Array = ['', '', '', '', 'дождь', 'ливень', 'снег', 'снег', 'гроза', '', 'без осадков']; //Время суток var timeday:Array = ['ночью', 'утром', 'днем', 'вечером']; //День недели var weekday:Array = ['', 'Воскресение', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; //Месяц var months:Array = ['', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']; //В этот массив сохраним объекты с состояниями погоды var current:Array; //Кукиш, хранящий время последнего обращения к XML страничке var lso:SharedObject; //Таймер var id:Number; //Время задержки, на просмотр состояния погоды var delay:Number = 10000; //Кол-во доступных состояний погоды var total:Number; // Индекс выбранного состояния var select:Number; //Объект, для загрузки и хранения данных о погоде в XML формате. var meteo:XML = new XML(); meteo.ignoreWhite = true; //Адрес XML страницы var meteo_adress:String="http://informer.gismeteo.ru/xml/27612_1.xml";//Moskva /******************ПРОЦЕДУРЫ***************************/ //Обработка нажатия на ссылку "Гизметео". Условия ©. link.onRelease = function() { getURL('http://informer.gismeteo.ru/#graph","_blank'); }; /*Функция загрузки XML данных и перезаписи времени начала загрузки. С нее стартуем и ее-же будем вызывать ежечасно, чтоб обновлять данные*/ function renew() { lso = SharedObject.getLocal('meteo'); lso.timesaved = new Date().getTime(); lso.flush(); meteo.load(meteo_adress); } |