有一位兄弟问了几天了,其实天气预报的程序闪吧里有一些,不过有些不能用了。
本来答应这位兄弟下午传上来的,但我们这儿网络瘫痪了半天,失信于人,唉……
测试地址:
http://wuwulong.136.tofor.com/tianqi.swf
要实现在网络上用
flash引用天气预报关键是跨
网站访问的问题,这就必须用到asp或php中转。(我的swf和asp不是在同一个
网站)
基本功能:
1、直接显示你所在地的天气2、搜索全国(世界)城市的天气信息。
基本思路如下:
1、首先要获得访问者的IP,再通过这个IP获得访问者所在的城市。
asp中有一句可以获得IP,某些网站提供通过IP搜索地名。
2、把获得的地名传给
http://weather.cn.yahoo.com/weather.html?city=获得天气信息,再对这些信息进行处理显示。
不过传给的地名要通过这个函数转换一下escape(),比如"北京"转换后得到的是"%E4%B8%8A%E6%B5%B7",否则不能查找。
注意:把源文件中asp和那个解决跨域问题的xml传到自己的空间就行了,swf传另外的其它空间也可以,fla中的tianqiurl=后面的换成你的asp所在的空间地址。
27日更新:
1、根据ip找地名改用百度的了,又快又准。(怎么先把它给忘了)
2、加入了一些特殊情况的判断,如自治区、直辖市、特别行政区,这次全国各地的访问者都应该能显示了吧。
28日更新:
“哈尔滨”出问题了,竟然不能显示这么大城市的天气信息,原来是发送数据的方式不行,先前用的是
mytian.Load(tianqiurl+"yahooqi.asp?city="+cityName+"&rd="+random(8888))
改为:
mytian.city=escape(cityName);mytian.rd=random(8888);
mytian.sendAndLoad(tianqiurl+"yahooqi.asp", mytian, "POST")
就OK了,原来的方式发送出去时会丢数据,flash发送“escape(哈尔滨)”asp接收时就变成了“哈尔”,所以大家以后也尽量用sendAndLoad发送数据。
(源文件已更新)
这次应该没别的问题了吧,特别感谢yuzhian兄弟提出的bug。
[
本帖最后由 gongjinglong 于 2007-1-28 09:11 编辑 ]