![]() |
|
||||||||||
|
|||||
|
.
|
Ну, давайте попробуем.
Писал на коленке, не тестил даже. Но суть должна быть понятна =) Это только для затравки. //////////////////////////////////////////////////////////////////////////////// // // // //////////////////////////////////////////////////////////////////////////////// /** * @author Dimarik * @version 1.0 * @playerversion Flash 6 * @langversion 1.0 * * Wheather tracker */ //--------------------- // Constants //--------------------- // Tags var TAG_TOWN: String = 'TOWN'; var TAG_FORECAST: String = 'FORECAST'; var TAG_PHENOMENA: String = 'PHENOMENA'; var TAG_PRESSURE: String = 'PRESSURE'; var TAG_TEMPERATURE: String = 'TEMPERATURE'; var TAG_WIND: String = 'WIND'; var TAG_RELWET: String = 'RELWET'; var TAG_HEAT: String = 'HEAT'; // Attributes var ATTR_TOWN_NAME: String = 'sname'; var ATTR_DAY: String = 'day'; var ATTR_MONTH: String = 'month'; var ATTR_YEAR: String = 'year'; var ATTR_HOUR: String = 'hour'; var ATTR_CLOUDINESS: String = 'cloudiness'; //--------------------- // Variables //--------------------- var weatherData: Object = new Object(); var town: String = ''; var _iterator: Number; // Создать на сцене клип с кадрами-иконками облачности var cloudnessMC: MovieClip; function parseXML(value:XMLNode):void { var node: XMLNode; var attr: Object; while (node = doc.firstChild) { attr = node.attributes; switch ( node.nodeName.toUpperCase() ) { case TAG_TOWN: this.town = attr[ATTR_TOWN_NAME]; break; case TAG_FORECAST: var hour: Number = parseInt(attr[ATTR_HOUR]); var day: Number = parseInt(attr[ATTR_DAY]); var month: Number = parseInt(attr[ATTR_MONTH]); var year: Number = parseInt(attr[ATTR_YEAR]); var timeStamp: Date = new Date(year, month - 1, day, hour); this._iterator = timeStamp.getTime(); this.weatherData[this._iterator] = new Object(); // TODO: tod, predict, weekday break; case TAG_PHENOMENA: this.weatherData[this._iterator].PHENOMENA = new Object(); this.weatherData[this._iterator].PHENOMENA.cloudiness = attr[ATTR_CLOUDINESS]; // or this.cloudnessMC.gotoAndStop( parseInt(attr[ATTR_CLOUDINESS]) || 'no_cloudiness_status'); break; // TODO, TODO, TODO } this.parseXML(node); node.removeNode(); } } function requestForecast():Void { xmlin:XML = new XML(); xmlin.ignoreWhite = true; var app:Object = this; xmlin.onLoad = function(success:Boolean):Void { if (success) { var doc:XMLNode = this.firstChild.firstChild.firstChild; app.parseXML(doc); } else { trace('Error: '); } }; xmlin.load("27612_1.xml"); } this.requestForecast(); |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 28
|
Цитата:
Описание формата: TOWN информация о пункте прогнозирования: index уникальный пятизначный код города sname закодированное название города latitude широта в целых градусах longitude долгота в целых градусах FORECAST информация о сроке прогнозирования: day, month, year дата, на которую составлен прогноз в данном блоке hour местное время, на которое составлен прогноз tod время суток, для которого составлен прогноз: 0 - ночь 1 - утро, 2 - день, 3 - вечер weekday день недели, 1 - воскресенье, 2 - понедельник, и т.д. predict заблаговременность прогноза в часах PHENOMENA атмосферные явления: cloudiness облачность по градациям: 0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно precipitation тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков rpower интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег spower вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза PRESSURE атмосферное давление, в мм.рт.ст. TEMPERATURE температура воздуха, в градусах Цельсия WIND приземный ветер min, max минимальное и максимальное значения средней скорости ветра, без порывов direction направление ветра в румбах, 0 - северный, 1 - северо-восточный, и т.д. RELWET относительная влажность воздуха, в % HEAT комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу вот надо сделать что бы во флеш все грузилось, а в учебниках описаны примеры анализа XML с одной или двумя переменными, а как анализировать вот такие сложные XML ни где не нашел, да и сам пытался допетрить, но ни как не получается!!! Добавлено через 1 минуту этот XML содержит данные о погоде в моем городе, вот как он расшифровывается: Описание формата: TOWN информация о пункте прогнозирования: index уникальный пятизначный код города sname закодированное название города latitude широта в целых градусах longitude долгота в целых градусах FORECAST информация о сроке прогнозирования: day, month, year дата, на которую составлен прогноз в данном блоке hour местное время, на которое составлен прогноз tod время суток, для которого составлен прогноз: 0 - ночь 1 - утро, 2 - день, 3 - вечер weekday день недели, 1 - воскресенье, 2 - понедельник, и т.д. predict заблаговременность прогноза в часах PHENOMENA атмосферные явления: cloudiness облачность по градациям: 0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно precipitation тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков rpower интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег spower вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза PRESSURE атмосферное давление, в мм.рт.ст. TEMPERATURE температура воздуха, в градусах Цельсия WIND приземный ветер min, max минимальное и максимальное значения средней скорости ветра, без порывов direction направление ветра в румбах, 0 - северный, 1 - северо-восточный, и т.д. RELWET относительная влажность воздуха, в % HEAT комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу вот надо сделать что бы во флеш все грузилось, а в учебниках описаны примеры анализа XML с одной или двумя переменными, а как анализировать вот такие сложные XML ни где не нашел, да и сам пытался допетрить, но ни как не получается!!! Добавлено через 1 час 58 минут Цитата:
параметр "null" и все тут! |
|
|||||
|
.
|
Продолжать будем? Нашел одну ошибку
заменить, естессно, на
если интересно, можно нормальный трекер потихонечку собрать =)
|
|
|||||
|
Регистрация: Jan 2008
Адрес: Земля
Сообщений: 178
|
Цитата:
// Variables var XMLdata:XML; var weatherObj:Object = new Object(); // Functions function parseNodes(elem:XMLNode, hodeline:Object):Void { if (elem.nodeType == 1) { hodeline[elem.nodeName] = {}; hodeline[elem.nodeName]['attributes'] = {}; parseNodeAttributes(elem,hodeline[elem.nodeName]['attributes']); } if (elem.nodeType == 3) { parseNodeText(elem,hodeline); } if (elem.hasChildNodes) { parseNodes(elem.firstChild,hodeline[elem.nodeName]); } if (elem.nextSibling != null) { parseNodes(elem.nextSibling,hodeline); } } function parseNodeAttributes(elem:XMLNode, objectline:Object):Void { var n:Number; for (n in elem.attributes) { objectline[n] = elem.attributes[n]; } } function parseNodeText(elem, objectParent:Object):Void { _root.createTextField("my_txt",1,100,100,300,100); _root.my_txt._visible = false; _root.my_txt.html = true; _root.my_txt.condenseWhite = true; _root.my_txt.htmlText = elem.nodeValue; if (_root.my_txt.htmlText.length <= 0) { elem.nodeValue = _root.my_txt.htmlText; } _root.my_txt.removeTextField(); if (elem.nodeValue.length > 0) { objectParent['text'] = elem.nodeValue; } } // Execute XMLdata = new XML(imported_xml_text); //imported_xml_text - любой текст в формате xml XMLdata.ignoreWhite = true; //если не нужно, можно убрать эту строку parseNodes(XMLdata.lastChild,weatherObj); var temp:Number = Number(weatherObj.MMWEATHER.REPORT.TOWN.FORECAST.TEMPERATURE.atributtes.max); ![]() Последний раз редактировалось RAlfDog; 06.01.2009 в 05:50. |
|
|||||
|
Цитата:
Очень интересно!)) |
|
|||||
|
А не пробывал получить готовый свф из их сайта, от декомпилировать и изменить графику на нужную тебе, только не забудь указать откуда данные, тогда на изменение они будут не против.
__________________
return this... |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|