语录提交--登陆--注册--论坛交流--站长博客

AS菜鸟教程15 实现与服务器的交互

[作者:thymecd][日期:2008-01-23][导航:Flash教程 >> ActionScript2 >> AS菜鸟教程15 实现与服务器的交互]
  实现与服务器的交互

 

 

 


作为Macromedia公司的网页三剑客之一,Flash理所当然地在网页设计和网络运用方面占占据着重要的地位。不仅可以在网页中嵌入Flash动画,而且可以使用Flash制作网站片头、导航条,甚至是全Flash的网站。借助于ActionScript,Flash也具备与服务器的交互功能。优秀的服务器端程序与ActionScript的结合将使网页更加精彩。

 

 

 

 

 

 

 

 

15.1  简单链接
使用ActionScript可以将Flash影片链接到指定的网页,这与HTML中的<A HREF>标记类似。如在按钮中添加如下ActionScript:
on (release) {
 getURL("http://www.51as.com");
}
无论该Flash影片是独立存在的还是嵌入在网页中,单击该按钮都将启动浏览器并打开通过getURL命令指定的页面,这里是Macromedia公司的主页。
getURL动作位于动作面板的“动作”/“浏览器/网络”目录。
除了使用getURL命令,也可以直接在动态文本中添加超链接,如为动态文本变量url添加链接如下所示:
url = "<A HREF="http://www.51as.com">The Macromedia Homepage.</A>";
在动态文本框中将显示The Macromedia Homepage.它与网页中的<A HREF>标记类似,只是链接文字下面没有下划线。
除了可以链接到网络中的地址,getURL命令还可以用来打开计算机中的文件夹和文件,如通过单击按钮打开F盘:
on (release) {
 getURL("file:///f:");
}
通过单击按钮打开文件:
on (release) {
 getURL("file:///f:/music/Stronger.DAT");
}
单击该按钮将打开如图15-1所示对话框。
 
图15-1  “文件下载”对话框
15.2  指定打开链接的目标框架或窗口
使用getURL可以指定浏览器中用来打开链接的框架或窗口,getURL命令的第2个参数即用来指定目标框架或窗口的名称。
如Flash影片所在的网页是由两个框架构成的,Flash所在的框架名为Frame1,另一个框架名为Frame2,可以使用如下所示的ActionScript在框架Frame2中打开目标网页:
on (release) {
 getURL("http://www.51as.com", "Frame2");
}
指定窗口的方式与此相同。
在ActionScript中有4个特殊的关键字用来指示浏览器执行特殊的操作,如下所示:
= _blank
在新窗口中打开目标页,该窗口将应用默认的浏览器设置。
= _parent
在当前框架的父级打开目标页。
= _top
在当前框架的顶级窗口中打开目标页,无论当前窗口由多少子框架构成,目标页都将取代框架而占据整个窗口。
= _self
使用当前窗口或框架打开目标页。当getURL命令省略第2个参数时即默认此方式。
如在新窗口中打开目标页的ActionScript如下所示:
on (release) {
 getURL("http://www.51as.com", "_blank");
}
如果要自定义浏览器中新窗口的大小或设置,你将需要用到JavaScript。
15.3  LoadVars对象
Flash MX版本提供了新增的LoadVars对象使你可以实现Flash与服务器的交互。
LoadVars 对象是 loadVariables 动作的替代方法,用于在 Flash 影片和服务器之间传输变量。 
可使用 LoadVars 对象在下载时获取错误信息、进度指示和流数据。LoadVars 对象的工作原理非常类似于 XML 对象;它使用方法 load、send 和 sendAndLoad 与服务器进行通讯。LoadVars 对象和 XML 对象的主要差别在于 LoadVars 传输动作脚本的名称和值对,而不是 XML 对象中存储的 XML DOM 树。 
LoadVars 对象与 XML 对象遵循相同的安全限制。 
15.3.1  从服务器下载数据
和其他对象一样,在使用LoadVars对象之前必须使用构造函数创建一个LoadVars对象的实例,如下所示:
myVars = new LoadVars();
要从服务器获取数据可以使用命令load,只需在load命令中指定要下载据的链接地址,如下所示:
myVars.load("myURL.txt");
从这里看来,LoadVars对象的load命令和LoadVariables命令很相似,但是LoadVariables命令不能区别文本中的不同变量,而在load命令中可以指定要获取数据的变量,如文本url.txt中有如下内容:
ID=thyme&Password=cd99
在Flash文件的第1帧动作面板中添加如下ActionScript
myVars = new LoadVars();
myVars.load("url.txt");
在第40帧的动作面板中添加如下ActionScript:
stop();
loadVariables("url.txt", _root);
_root.varID = myVars.ID;
_root.varPA = myVars.Password;
其中,第40帧的第1个动态文本变量名为ID,第2个动态文本变量名为varID,第3个动态文本变量名为varPA。脚本的运行结果如图15-2所示。
 
图15-2  loadVariables命令和LoadVars对象的load命令结果比较
需要说明的是,与loadVariables命令相同,load命令指定的链接文件也必须与Flash的播放文件在同一个文件目录下面。
15.3.2  向服务器上传数据
使用send命令可以向服务器上传数据,如下所示:
myVars = new LoadVars();
myVars.ID = "thyme";
myVars.Password = cd99;
myVars.send("mypage.asp", "_self");
以上的脚本创建一个LoadVars对象myVars,然后分别设置两个属性ID和Password,最后将该对象发送到服务器的mypage.asp页中。
参数_self表示将使用上传的变量从服务器获取信息以刷新当前页面。
使用sendAndLoad命令不仅可以上传数据,而且可以获取服务器的响应信息,如下所示:
mySendVars = new LoadVars();
myLoadVars = new LoadVars();
mySendVars.ID = "thyme";
mySendVars.Password = cd99;
mySendVars.sendAndLoad("mypage.asp", myLoadVars);
其中创建了两个LoadVars对象,myLoadVars作为sendAndLoad命令的第2个参数用于存放来自服务器的响应。
15.3.3  下载状态
使用load、send、sendAndLoad命令下载和上传数据有一定的速度限制,这种速度与客户端和服务器的数据传输速率有关,但是无论如何都不是刚一执行命令就能马上完成。如上面的例子,其中在第1帧执行load命令,在第40帧才使用脚本将其中的数据在动态文本中显示出来;如果只有1帧,在执行load命令后马上使用脚本为动态文本变量赋值,并不能实现我们预期的效果。
为了避免被动地等待数据传输,LoadVars对象提供了检测数据下载状态的办法。
使用getBytesLoaded和getBytesTotal方法可以了解数据下载的进度,传输的数据量小并且网络速度也并不是很慢时这两种方法并不能发挥明显的作用。如果要解决上例中的问题,可以定义一个在数据下载完成时执行的函数,当数据完全传输成功时,系统会自动启动该函数。
如要将文件load.fla的第40帧合并到第1帧,如果使用如下的ActionScript,结果如图15-3所示。
stop();
myVars = new LoadVars();
myVars.load("url.txt");
loadVariables("url.txt", _root);
_root.varID = myVars.ID;
_root.varPA = myVars.Password;
 
图15-3  数据未下载完成,动态文本不显示数据
如果将其中的脚本改写成如下所示,我们将得到正确的结果,如图15-4所示:
stop();
loadVariables("url.txt", _root);
myVars = new LoadVars();
myVars.load("url.txt");
myVars.onLoad = function() {
 _root.varID = myVars.ID;
 _root.varPA = myVars.Password;
};
 
图15-4  在数据下载完成时自动运行函数,动态文本显示数据
仅仅完成从服务器下载和向服务器上传数据是不够的,要用Flash更强大的应用程序就得编写相应的服务器端脚本,如前面提到的mypage.asp就是用ASP(Active Sever Pages)语言编写的动态页面。编写服务器端脚本的语言很多,如PHP、CGI、Perl等,限于篇幅,在此不予详细讲解。

[文章热度:]


上一页:AS菜鸟教程14 声音对象的使用

下一页:AS菜鸟教程16 xml的操作

最新话题

网站导航

搜索

网站公告


Copyright 2007 51as.com. Some Rights Reserved.
鄂ICP备07003189号

Powered by: KingCMS 5.0.1.0217