Flash CS4设计天气预报程序.docx

上传人:b****5 文档编号:6410157 上传时间:2023-01-06 格式:DOCX 页数:31 大小:1.66MB
下载 相关 举报
Flash CS4设计天气预报程序.docx_第1页
第1页 / 共31页
Flash CS4设计天气预报程序.docx_第2页
第2页 / 共31页
Flash CS4设计天气预报程序.docx_第3页
第3页 / 共31页
Flash CS4设计天气预报程序.docx_第4页
第4页 / 共31页
Flash CS4设计天气预报程序.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

Flash CS4设计天气预报程序.docx

《Flash CS4设计天气预报程序.docx》由会员分享,可在线阅读,更多相关《Flash CS4设计天气预报程序.docx(31页珍藏版)》请在冰豆网上搜索。

Flash CS4设计天气预报程序.docx

FlashCS4设计天气预报程序

第18章设计天气预报程序

目前,互联网中已经存在很多种语言设计的天气预报程序,例如Ajax、HTML、ASP.NET、PHP、JSP等。

其实在Flash中,通过ActionScript脚本语言与上述语言相结合使用,也可以设计出Flash版的天气预报程序,而且该程序可以承继Flash的优点。

18.1创建数据库及ASP页面

Flash的ActionScript语言属于客户端语言,利用它可以在客户端实现比较绚丽的效果。

但是,它无法直接对服务器端的文件和数据库进行操作。

如果想要与服务器端的程序进行通信,则必须与服务器端语言(ASP、PHP、JSP等)相结合使用。

18.1.1创建数据库

数据库是用于存储数据信息的系统,通过其它语言程序可以读取数据库中的信息,或将信息存储到数据库中。

本例中创建的数据库用于存储获取的天气预报信息,以及为天气预报程序提供数据来源。

数据库结构如图18-1所示。

图18-1数据库

创建过程:

(1)在电脑的【开始】菜单中,执行【所有程序】|【MicrosoftOffice】|【MicrosoftOfficeAccess2007】命令,打开Access2007数据库,如图18-2所示。

图18-2打开Access2007数据库

MicrosoftOfficeAccess2007是关联式数据库管理系统,用于存储数据信息,是MicrosoftOffice2007的成员之一。

在创建数据库之前,首先需要确认电脑中是否已经安装此程序。

(2)在【MicrosoftAccess】界面中选择【模板类别】选择面板中的【功能】选项。

然后,选择【新建空白数据库】选项面板中的“空白数据库”选项,如图18-3所示。

图18-3选择空白数据库

(3)在界面右下角弹出的【空白数据库】界面中,单击【文件名】文本框右侧的【打开文件】按钮

,即会弹出【文件新建数据库】对话框,如图18-4所示。

图18-4打开【文件新建数据库】对话框

(4)在【文件新建数据库】对话框中选择要保存数据库的位置,本例中的数据库保存在IIS主目录(F盘下的myWeb文件夹)下的“weatherReport”文件夹内,并为数据库命名为“weather”,如图18-5所示。

图18-5选择数据库保存路径

(5)单击【确定】按钮后,在【MicrosoftAccess】界面的右下角即会显示数据库所要保存的路径和名称,如图18-6所示。

18-6显示数据库路径和名称

(6)单击【创建】按钮后,将会创建并打开“weather”数据库。

然后,在数据库界面中右击【表1】选项卡,在弹出的菜单中执行【设计视图】命令,如图18-7所示。

图18-7选择设计视图

(7)在弹出的【另存为】对话框中输入数据表的名称(本例为weatherInfo),该数据表用于存储天气预报信息,如图18-8所示。

图18-8命名数据表

(8)单击【确定】按钮后即可打开“weatherInfo”数据表,该表中默认存在“ID”字段,如图18-9所示。

图18-9打开数据表

(9)将光标放置在“ID”字段名称的下面的单元格中,然后输入新的字段名称“allInfo”,如图18-10所示。

图18-10创建新字段

(10)将光标放置在字段名称右侧的单元格中,在弹出的菜单中选择【文本】选项,即设置该字段中存储的数据为文本类型,如图18-11所示。

图18-11选择数据类型

(11)右击【weatherInfo】选项卡,在弹出的菜单中执行【数据表视图】命令,即可切换到数据表视图模式中,此时数据库就创建完成了,如图18-12所示。

图18-12数据表视图

18.1.2创建ASP页面

ASP是一种服务器端语言,它可以对文件和数据库进行操作。

本例将通过ASP页面实现获取网页中提供的天气预报信息、存储天气预报信息到数据库,以及为Flash提供信息源的功能。

创建过程:

(1)在电脑的【开始】菜单中,执行【所有程序】|【AdobeDreamweaverCS4】命令,打开DreamweaverCS4软件,该软件用于制作HTML、ASP、PHP等网页,如图18-13所示。

图18-13打开DreamweaverCS4

(2)单击该界面中【新建】列表的【ASPVBScript】选项,即可新建并打开一个ASP页面,如图18-14所示。

图18-14新建ASP页面

(3)选择文档中的所有代码并将其删除,然后输入以下代码。

该段代码通过创建XMLHTTP对象来获取指定网页中的源代码。

代码如下所示:

<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>

<%

Response.Buffer=true

'设置网页启动缓存

DimmyConnection,TheURL

'声明变量

TheURL="

'要获取源代码的网页URL

SetMyConnection=Server.CreateObject("Microsoft.XMLHTTP")

'创建XMLHTTP对象

MyConnection.Open"GET",TheURL,False

'通过GET方法打开指定网页

MyConnection.Send

TheData=MyConnection.responseText

'获取网页源代码中的所有文本信息

Response.ContentType=MyConnection.getResponseHeader("Content-Type")

'获取网页的内容格式

Response.Write(TheData)

'输出网页中的源代码

SetMyConnection=Nothing

'关闭XMLHTTP对象,以释放资源

%>

新建文本文档,将上面的代码复制到文档中,将其保存为后缀名为“.asp”的文件也可。

(4)输入完代码后,按Ctrl+S组合键,在弹出的【另存为】对话框中选择网页要保存的路径和名称(本例将网页保存在“weatherReport”文件夹内并命名为“proxy”),如图18-15所示。

图18-15保存ASP页面

对于没有安装Dreamweaver软件的用户来说,可以将代码输入到记事本中,然后再转换为asp格式的网页。

(5)使用相同的方法,在“weatherReport”文件夹内新建“process”ASP页面。

然后,在代码中通过创建Connection对象连接数据库;创建Recordset对象将获取的信息存储到数据表中。

代码如下所示:

<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%>

<%

allInfo=Request("info")

Setconn=Server.CreateObject("Adodb.Connection")

'创建Connection对象

tmpPD="Provider=Microsoft.ACE.OLEDB.12.0"

'设置数据库驱动

tmpDS="DataSource="&Server.MapPath("weather.accdb")

'指定数据库的路径

tmpSTR=tmpPD&";"&tmpDS

'构造打开数据库的字符串

conn.OpentmpSTR

'利用Connection对象的Open方法打开数据库

Setrs=Server.CreateObject("Adodb.Recordset")

'创建Recordset对象

rs.open"weatherInfo",conn,1,3

'打开从数据库中读出的记录集

rs("allInfo")=allInfo

'将新的天气信息写入数据库

rs.update

'更新数据库

rs.Close

'利用Connection对象的Close方法关闭连接

Setrs=Nothing

Setconn=Nothing

'将Connection对象从内存中删除,以释放资源

%>

(6)在“weatherReport”文件夹内新建“getInfo”ASP页面。

然后,在代码中通过创建Connection对象连接数据库;创建Recordset对象输出“allInfo”字段中存储的数据。

代码如下所示:

<%

Setconn=Server.CreateObject("Adodb.Connection")

'创建Connection对象

tmpPD="Provider=Microsoft.ACE.OLEDB.12.0"

'设置数据库驱动

tmpDS="DataSource="&Server.MapPath("weather.accdb")

'指定数据库的路径

tmpSTR=tmpPD&";"&tmpDS

'构造打开数据库的字符串

conn.OpentmpSTR

'利用Connection对象的Open方法打开数据库

Setrs=Server.CreateObject("Adodb.Recordset")

'创建Recordset对象

rs.open"weatherInfo",conn,1,3

'打开从数据库中读出的记录集

response.writers("allInfo")

'输出allInfo字段中的数据

rs.Close

'利用Connection对象的Close方法关闭连接

Setrs=Nothing

Setconn=Nothing

'将Connection对象从内存中删除,以释放资源

%>

18.2服务器端的功能设计和实现

服务器端程序用于从获取的网页源代码中提取天气预报信息,并将其显示在可视化的界面中。

而为了方便简化操作,本例利用ActionScript语言定时从网页中获取天气预报信息,以快速为用户提供天气预报信息。

18.2.1获取天气预报信息界面

为了方便获取天气预报信息,可以让服务器端的Flash每到晚上8:

00自动从“中国气象局”网站获取新的数据,并更新到本地服务器中的数据库,从而可以大大减少劳动力。

获取天气预报信息的界面如图18-16所示。

图18-16自动获取天气预报信息界面

设计过程:

(1)在FlashCS4中,执行【文件】|【新建】命令,在打开的【新建文档】对话框中选择文档【类型】为“Flash文件(AdobeAIR)”,如图18-17所示。

图18-17新建Flash文件

(2)在【文档属性】面板中,设置文档的【尺寸】为600×340像素。

然后,在舞台中绘制一个绿色的渐变背景,如图18-18所示。

图18-18绘制背景

(3)将导入的“阴影”图像拖入到舞台中,并在上面绘制两个不同颜色和大小的矩形,以构成一个带边框的显示区域,然后将其转换为影片剪辑,如图18-19所示。

图18-19绘制显示区域

(4)新建图层,在显示区域的顶部输入标题文字,并在【属性】面板中设置其字符【系列】为“迷你简综艺”;【大小】为“37点”,如图18-20所示。

图18-20输入标题文字

(5)打开【组件】面板,将“GataGrid”组件拖入到标题文字的下面,并缩放其至适当的尺寸。

然后,在【属性】面板中设置其【实例名称】为“myDataGrid”,该组件用来显示天气预报信息,如图18-21所示。

图18-21拖入“DataGrid”组件

(6)在显示区域的左下角插入一个动态文本,并调整其大小。

然后,在【属性】面板中设置其【实例名称】为“mess”,该动态文本用来显示加载天气预报信息的状态,如图18-22所示。

图18-22插入动态文本

(7)在该动态文本的右侧再插入一个动态文本,调整其大小并设置【实例名称】为“mess”;字符【系列】为“迷你简综艺”;【大小】为“20点”,如图18-22所示。

图18-23插入动态文本

(8)此时,获取天气预报信息的界面就制作完成了,按Ctrl+Enter组合键可预览效果。

18.2.2获取天气预报信息程序

获取天气预报信息程序通过调用ASP页面,可以从指定网页中的获取源代码。

然后,利用ActionScript语言将源代码中的天气预报信息分离出来,最后再通过调用ASP页面将天气预报信息存储到数据库中。

获取天气预报信息程序如图18-24所法。

图18-24获取天气预报信息

制作过程:

(1)在“weatherReport”文件夹内新建名称为“countDown”的ActionScript文件。

然后,在该文件中创建pack包、“countDown”自定义类和主函数。

代码如下所示:

package{

publicclasscountDown{

//countDown自定义类

publicvarnow_millisecondsFrom1970:

Number;

publicvarnow_secondsFrom1970:

Number;

publicvarto_millisecondsFrom1970:

Number;

publicvarto_secondsFrom1970:

Number;

publicvarremainSeconds_Total:

Number;

publicvarremainDays:

String;

publicvarremainHours:

String;

publicvarremainMinutes:

String;

publicvarremainSeconds:

String;

publicvaroutputMess:

String;

//声明变量

publicfunctioncountDown(fromYear,fromMonth,fromDay,fromHour,fromMinute,fromSecond,toYear,toMonth,toDay,toHour,toMinute,toSecond){

//countDown主函数

}

}

}

(2)在countDown()函数体中,通过创建Date对象初始化起始时间和目标时间,并获取自1970年1月1日午夜(通用时间)以来的毫秒数,然后计算它们之间相距的秒数。

代码如下所示:

varfromDate:

Date=newDate(fromYear,fromMonth,fromDay,fromHour,fromMinute,fromSecond);

//初始化起始时间

now_millisecondsFrom1970=fromDate.getTime();

//获取起始时间自1970年1月1日午夜(通用时间)以来的毫秒数

now_secondsFrom1970=int(now_millisecondsFrom1970/1000);

//将毫秒数转换为秒数

vartoDate:

Date=newDate(toYear,toMonth,toDay,toHour,toMinute,toSecond);

//初始化目标时间

to_millisecondsFrom1970=toDate.getTime();

to_secondsFrom1970=int(to_millisecondsFrom1970/1000);

//获取目标时间自1970年1月1日午夜(通用时间)以来的秒数

remainSeconds_Total=to_secondsFrom1970-now_secondsFrom1970;

//计算起始时间与目标时间相距的秒数

(3)通过If语句判断目标时间是否落后于起始时间。

如果是,则自动将起始时间延后到第二天。

代码如下所示:

if(toHour

//如果目标时间的小时数落后于起始时间的小时数

toDay+=1;//时间延后到第二天

}

if(toHour==fromDate.getHours()&&toMinute

//如果目标时间的分钟数落后于起始时间的分钟数

toDay+=1;//时间延后到第二天

}

if(toHour==fromDate.getHours()&&toMinute==fromDate.getMinutes()&&toSecond

//如果目标时间的秒数落后于起始时间的秒数

toDay+=1;//时间延后到第二天

}

(4)计算起始时间和目标时间之间相距的天数、小时数、分钟数和秒数,并将它们存储到outputMess变量中。

代码如下所示:

vartmpRemainDays:

Number;

tmpRemainDays=int(int(remainSeconds_Total/3600)/24);

//将相距的秒数转换为天数

remainDays=String(tmpRemainDays);

//将天数转换为字符串值

vartmpRemainHours:

Number;

tmpRemainHours=int((remainSeconds_Total-tmpRemainDays*24*3600)/3600);

//计算剩余的小时数

if(tmpRemainHours<10){

//如果小时数小于10

remainHours="0"+tmpRemainHours;

//则在小时数前面加上“0”字符串

}else{

remainHours=String(tmpRemainHours);

//将小时数转换为转换字符串值

}

vartmpRemainMinutes:

Number;

tmpRemainMinutes=int((remainSeconds_Total-tmpRemainDays*24*3600-tmpRemainHours*3600)/60);

//计算剩余的分钟数

if(tmpRemainMinutes<10){

remainMinutes="0"+tmpRemainMinutes;

}else{

remainMinutes=String(tmpRemainMinutes);

}

vartmpRemainSeconds:

Number;

tmpRemainSeconds=int(remainSeconds_Total%60);

//计算剩余的秒数

if(tmpRemainSeconds<10){

remainSeconds="0"+tmpRemainSeconds;

}else{

remainSeconds=String(tmpRemainSeconds);

}

outputMess=remainHours+":

"+remainMinutes+":

"+remainSeconds;

//将剩余的小时数、分钟数和秒数存储到outputMess变量中

(5)在“weatherReport”文件夹内新建名称为“weatherInfo”的ActionScript文件。

然后,在该文件中创建pack包、“weatherInfo”自定义类和主函数。

代码如下所示:

package{

//导入文件运行所需的类

importflash.display.*;

import.*;

importflash.events.*;

importflash.errors.*;

importflash.system.*;

importflash.text.*;

importflash.utils.*;

importfl.controls.DataGrid;

//导入DataGrid组件

importfl.controls.dataGridClasses.DataGridColumn;

//导入DataGridColumn类

importfl.managers.StyleManager;

importfl.data.DataProvider;

//导入DataProvider类

publicclassweatherInfoextendsSprite{

privatevarIP:

String;

privatevariisPath:

String;

privatevarproxyPath:

String;

privatevarprocessPath:

String;

//定义ASP文件路径

privatevaraspRequest:

URLRequest;

privatevaraspLoader:

URLLoader;

privatevartmpString:

String;

//定义URLRequest和URLLoader对象

privatevarmainArray:

Array;

privatevartmpArray:

Array;

privatevarstrToSend:

String;

privatevarCITY:

String;

privatevarDATE:

String;

privatevarWEAT:

String;

privatevarTEMP:

String;

privatevarWIND:

String;

privatevarULTR:

String;

privatevarAIR:

String;

//定义天气预报参数

privatevartmpOutputMess:

String;

privatevartmpArrayForCountDown:

Array;

privatevarcountDownInterval:

uint;

privatevargetInfoInterval:

uint;

privatevarstartCountInterval:

uint;

//定义倒计时

privatevartryGetInfoTimes:

Number;

privatevartryWriteInfoTimes:

Number;

//定义尝试调用次数

publicfunctionweatherInfo(){

init();//初始化设置

startLoad();//获取天气预报信息

startInterval();

}

}

}

(6)创建init()函数,该函数用来初始化天气预报程序中的设置,包括编码、服务器IP、程序位置等。

代码如下所示:

privatefunctioninit(){

System.useCodePage=true;

//设置编码,使Flash和操作系统使用的语言保持一致

IP="127.0.0.1";

//定义服务器IP

iisPath="http:

//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1