PDA

Просмотр полной версии : погода во флеше


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 от гисметео, подставляя свои картинки.

zurkis
23.12.2008, 00:41
ну так а что мешает взять с сайта допустим gismeteo.ru погодный информер, там помоему есть флешовые, они дают код, ты его вставляешь в свою страничку и флешовый погодный инофрмер у тебя

DrSmyrke
23.12.2008, 00:46
судя по этому коду яндекс генерирует картинку сам в эту:
http://info.weather.yandex.net/informer/175x114/26258.png
вариант подгружать эту картинку в флэшку.
а в идеале использовать погоду в xml от гисметео, подставляя свои картинки.
ты так не сможешь сделать, потому что он название картинки каждый день меняет

Добавлено через 1 минуту
а за гисметео огромное спасибо вам!!! низачто не догадался бы! ВЦ

aksios
23.12.2008, 01:04
Есть куча информеров и пользующих их флешек - гуглить, гуглить и есчо раз гуглить.
Готовый стоит $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");

пробовал по разному но все равно ничего не пишет в текстовое поле, что делать? памагите, плиз! Заранее СПС

zurkis
23.12.2008, 02:57
попробуй написать для данного xml парсер, да и зачем брать чужой xml больше провозишься, как было сказано в 5 посте, лучше поискать в гугле и найти что тебе надо, я уверен что там есть такое, либо купить, стоит не так уж и дорого, больше провозишься если будешь с чужим разбираться

DrSmyrke
23.12.2008, 08:10
я хочу разобраться для самопознания, если все время покупать чужие работы сам никогда не научишься ничего делать и мозги отрафируются!
памагите плиз разабраться....!

zurkis
23.12.2008, 11:31
да не против помочь разобраться, но ты бы сначала разобрался для начала со своим xml и пояснил что и за что отвечает? и тогда давай вместе решать твои вопросы

artem_fs
23.12.2008, 11:35
ты так не сможешь сделать, потому что он название картинки каждый день меняет

почему несмогу? она в флэш и будет грузятся каждый раз из яндекса. адрес картинки то не меняется.

dimarik
23.12.2008, 12:20
Ну, давайте попробуем.

Писал на коленке, не тестил даже. Но суть должна быть понятна =)

Это только для затравки.

////////////////////////////////////////////////////////////////////////////////
//
//
//
////////////////////////////////////////////////////////////////////////////////

/**
* @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" и все тут!

dimarik
25.12.2008, 00:42
Продолжать будем? Нашел одну ошибку while (node = doc.firstChild) {
заменить, естессно, на while (node = value.firstChild) {

если интересно, можно нормальный трекер потихонечку собрать =)

RAlfDog
06.01.2009, 05:40
вот еще один вопросик по теме, стырил я 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
:)

KiL33
06.01.2009, 10:36
Продолжать будем?
если интересно, можно нормальный трекер потихонечку собрать =)

dimarik, браво, браво!!!
Очень интересно!))

AlexCooper
08.01.2009, 21:36
А не пробывал получить готовый свф из их сайта, от декомпилировать и изменить графику на нужную тебе, только не забудь указать откуда данные, тогда на изменение они будут не против.