Просмотр полной версии : погода во флеше
DrSmyrke
22.12.2008, 23:56
мне собственно нужно чтобы во флеше отображалась погда моего города, я на яндексе нашел вот такой код
-------------------------------------
<a href="http://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*http://weather.yandex.ru/index.xml?city=26258"><img src="http://info.weather.yandex.net/informer/175x114/26258.png" border="0" alt="Яндекс.Погода"/><img width="1" height="1" src="http://clck.yandex.ru/click/dtype=stred/pid=7/cid=1227/*http://img.yandex.ru/i/pix.gif" alt="" border="0"/></a>
-------------------------------------
это банер с погодой для моего города, если вставить его в HTML, то он отображается как картина с сылкой, но как сделать так, чтобы всеэто во флеше работало, не понимаю! памагите люди добрые, а то уже весь мозг измучал в поисках истины!
заранее СПС.:o
artem_fs
23.12.2008, 00:40
судя по этому коду яндекс генерирует картинку сам в эту:
http://info.weather.yandex.net/informer/175x114/26258.png
вариант подгружать эту картинку в флэшку.
а в идеале использовать погоду в xml от гисметео, подставляя свои картинки.
ну так а что мешает взять с сайта допустим gismeteo.ru погодный информер, там помоему есть флешовые, они дают код, ты его вставляешь в свою страничку и флешовый погодный инофрмер у тебя
DrSmyrke
23.12.2008, 00:46
судя по этому коду яндекс генерирует картинку сам в эту:
http://info.weather.yandex.net/informer/175x114/26258.png
вариант подгружать эту картинку в флэшку.
а в идеале использовать погоду в xml от гисметео, подставляя свои картинки.
ты так не сможешь сделать, потому что он название картинки каждый день меняет
Добавлено через 1 минуту
а за гисметео огромное спасибо вам!!! низачто не догадался бы! ВЦ
Есть куча информеров и пользующих их флешек - гуглить, гуглить и есчо раз гуглить.
Готовый стоит $8.
DrSmyrke
23.12.2008, 02:19
вот еще один вопросик по теме, стырил я XML с гисметео, вот токо не могу разобраться в нем.
- <MMWEATHER>
- <REPORT type="frc3">
- <TOWN index="27612" sname="%CC%EE%F1%EA%E2%E0" latitude="56" longitude="38">
- <FORECAST day="23" month="12" year="2008" hour="3" tod="0" predict="18" weekday="3">
<PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0" />
<PRESSURE max="746" min="744" />
<TEMPERATURE max="-6" min="-8" />
<WIND min="5" max="9" direction="4" />
<RELWET max="89" min="84" />
<HEAT min="-13" max="-11" />
</FORECAST>
- <FORECAST day="23" month="12" year="2008" hour="9" tod="1" predict="24" weekday="3">
<PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0" />
<PRESSURE max="745" min="743" />
<TEMPERATURE max="-6" min="-8" />
<WIND min="5" max="9" direction="3" />
<RELWET max="91" min="86" />
<HEAT min="-12" max="-10" />
</FORECAST>
- <FORECAST day="23" month="12" year="2008" hour="15" tod="2" predict="30" weekday="3">
<PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0" />
<PRESSURE max="746" min="744" />
<TEMPERATURE max="-5" min="-7" />
<WIND min="5" max="9" direction="3" />
<RELWET max="89" min="84" />
<HEAT min="-12" max="-10" />
</FORECAST>
- <FORECAST day="23" month="12" year="2008" hour="21" tod="3" predict="36" weekday="3">
<PHENOMENA cloudiness="3" precipitation="10" rpower="0" spower="0" />
<PRESSURE max="748" min="746" />
<TEMPERATURE max="-6" min="-8" />
<WIND min="3" max="6" direction="3" />
<RELWET max="92" min="87" />
<HEAT min="-9" max="-7" />
</FORECAST>
</TOWN>
</REPORT>
</MMWEATHER>
не понимаю как мне взять данные хотябы с первого дочернего узла, вот что я натворил:
function init () {
sdf.text=myXML.firstChild.firstChild.firstChild.attributes.sname;
}
myXML = new XML();
myXML.onLoad = init;
myXML.load("27612_1.xml");
пробовал по разному но все равно ничего не пишет в текстовое поле, что делать? памагите, плиз! Заранее СПС
попробуй написать для данного xml парсер, да и зачем брать чужой xml больше провозишься, как было сказано в 5 посте, лучше поискать в гугле и найти что тебе надо, я уверен что там есть такое, либо купить, стоит не так уж и дорого, больше провозишься если будешь с чужим разбираться
DrSmyrke
23.12.2008, 08:10
я хочу разобраться для самопознания, если все время покупать чужие работы сам никогда не научишься ничего делать и мозги отрафируются!
памагите плиз разабраться....!
да не против помочь разобраться, но ты бы сначала разобрался для начала со своим xml и пояснил что и за что отвечает? и тогда давай вместе решать твои вопросы
artem_fs
23.12.2008, 11:35
ты так не сможешь сделать, потому что он название картинки каждый день меняет
почему несмогу? она в флэш и будет грузятся каждый раз из яндекса. адрес картинки то не меняется.
Ну, давайте попробуем.
Писал на коленке, не тестил даже. Но суть должна быть понятна =)
Это только для затравки.
////////////////////////////////////////////////////////////////////////////////
//
//
//
////////////////////////////////////////////////////////////////////////////////
/**
* @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();
DrSmyrke
23.12.2008, 13:53
да не против помочь разобраться, но ты бы сначала разобрался для начала со своим xml и пояснил что и за что отвечает? и тогда давай вместе решать твои вопросы
этот 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 минуту
этот 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 минут
Ну, давайте попробуем.
Писал на коленке, не тестил даже. Но суть должна быть понятна =)
Это только для затравки.
////////////////////////////////////////////////////////////////////////////////
//
//
//
////////////////////////////////////////////////////////////////////////////////
/**
* @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();
спасибо конечно большое, но почемуто не фурычит она, выдает
параметр "null" и все тут!
Продолжать будем? Нашел одну ошибку while (node = doc.firstChild) {
заменить, естессно, на while (node = value.firstChild) {
если интересно, можно нормальный трекер потихонечку собрать =)
вот еще один вопросик по теме, стырил я XML с гисметео, вот токо не могу разобраться в нем.
пробовал по разному но все равно ничего не пишет в текстовое поле, что делать? памагите, плиз! Заранее СПС
Вот вам XML-парсер (делал в одном своём проекте), разбирает XML и создает на его основе объект с данными свойствами и значениями:
// 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);
и после этого вам остается только обратиться к нужному свойству объекта weatherObj :
var temp:Number = Number(weatherObj.MMWEATHER.REPORT.TOWN.FORECAST.TEMPERATURE.atributtes.max);
Когда парсер разбирает XML, он атрибуты тега пишет в свойство atributtes, а текст тега сохраняет в свойстве text. Т.е. чтобы добраться до направления ветра, нужно вот сюда обращаться WIND.atributtes.direction
:)
Продолжать будем?
если интересно, можно нормальный трекер потихонечку собрать =)
dimarik, браво, браво!!!
Очень интересно!))
AlexCooper
08.01.2009, 21:36
А не пробывал получить готовый свф из их сайта, от декомпилировать и изменить графику на нужную тебе, только не забудь указать откуда данные, тогда на изменение они будут не против.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.