FLASH与ASP通信原理入门.docx

上传人:b****5 文档编号:6067331 上传时间:2023-01-03 格式:DOCX 页数:25 大小:134.19KB
下载 相关 举报
FLASH与ASP通信原理入门.docx_第1页
第1页 / 共25页
FLASH与ASP通信原理入门.docx_第2页
第2页 / 共25页
FLASH与ASP通信原理入门.docx_第3页
第3页 / 共25页
FLASH与ASP通信原理入门.docx_第4页
第4页 / 共25页
FLASH与ASP通信原理入门.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

FLASH与ASP通信原理入门.docx

《FLASH与ASP通信原理入门.docx》由会员分享,可在线阅读,更多相关《FLASH与ASP通信原理入门.docx(25页珍藏版)》请在冰豆网上搜索。

FLASH与ASP通信原理入门.docx

FLASH与ASP通信原理入门

FLASH与ASP通信原理入门

经常有人问我FLASH留言板的制作方法,无奈这东西一句两句没办法说清楚,于是就萌发了写教程的想法。

可后来又一想,授人以鱼,不如授人以渔,还不如集中精力好好讲将FLASH与ASP的通讯原理,原理通了,具体项目就可以自由发挥了。

我这个教程面向初级群体,在开始教程之前,我假设你已经具备FLASH操作基础知识,了解IIS配置以及运行环境。

尽管FLASH与ASP通信方式有很多,但这篇教程中我选择使用LoadVars类,一因为LoadVars类容易掌握,易于讲解;二是因为它不牵扯太多其他方面的知识。

另外,我在ASP中采用的是JS脚本,因为JS脚本跟AS非常像,只要你有一定的AS基础,JS不用学就可以基本看懂了。

最后是FLASH版本,我选择flashpro8.0简体中文版,swf发布为AS2.0,flashplayer8.0。

在看我的教程之前,建议先抽出几分钟阅读一下“FLASH基础开发习惯”,这样更有利于理解我的代码。

目录:

∙LoadVars类基础讲解(LoadVars类以下简称LV)

∙ASP中基本的输入输出

∙LV与ASP通讯原理

∙ASP操作数据库入门

∙LV与ASP综合运用

∙其它通讯方式原理浅谈

这里我主要围绕我的教程进行讲解,区别有些全盘灌输的教程,我将有真对性的着重讲此类的两个方法和一个事件:

load、loadAndSend方法,和onLoad事件。

如果你需要更详细的了解LV类,建议你查一下帮助:

帮助→flash帮助→全部书籍→ActionScript2.0语言参考→ActionScript类→LoadVars。

当然你也可以直接搜索LoadVars。

LV与TXT通讯。

不是要讲ASP吗?

怎么讲起TXT了?

呵呵,先别急,其实LV跟ASP通讯原理与跟TXT通讯原理是一样的。

TXT大家经常用,讲起来比较容易理解。

LV跟TXT通讯需要在TXT中采用“变量”/“值”配对的数据模式。

比如:

wenben=我要做FLASH留言本。

这里“wenben”就是变量,“我要做FLASH留言本”就是值,而“=”就是它们的配对方式,也就是建立联系的方式。

好了,现在我们建立一个“lv_shiyan.txt”文本文件,并在其中输入:

neirong_txt=我要做FLASH留言本。

然后在同文件夹下再建立一个“lv_shiyan.fla”,在第一贞写代码:

//设置编码,不然会显示乱码

System.useCodepage=true;

//实例化一个LV对象

varshiyan_lv=newLoadVars();

//载入外部文本

shiyan_lv.load("lv_shiyan.txt");

//载入成功后

shiyan_lv.onLoad=function(chenggong){

if(chenggong){

   //获取外部文本内容

   varneirong=shiyan_lv.neirong_txt;

   //输出文本内容

   trace("您载入的文本内容是:

"+neirong);

}else{

   //加载失败给予提示

   trace("加载失败");

 }

};

运行上面的代码,你会在输出面板中看到“您载入的文本内容是:

我要做FLASH留言本”,由此可见,外部“lv_shiyan.txt”中的内容已经成功加载。

有兴趣的朋友可以改动一下TXT文件名,试验一下加载失败的情况。

通过上面的代码,我们学到以下知识:

1,如何实例化一个LV对象(使用new关键字)

2,如何用LV对象加载外部文本文件(使用load方法)

3,如何判断外部文本文件是否加载成功(使用onLoad事件)

4,当外部文本文件加载成功后,如何获取并利用其内容。

在外部文本文件中,我们之所以使用“变量/值”配对的数据格式,正是为了被LV对象利用,当外部文本文件加载成功后,其中的变量就会被LV对象记录,而在AS中通过LV对象引用外部变量的方式则为:

LV对象.外部文本文件中的变量名字。

上面的代码中即为:

shiyan_lv.neirong_txt。

上面的例子中讲了LV与TXT通讯的基本原理,现在我们来扩展一下,如果我们想在一个外部TXT中使用多个变量如何做呢?

答案其实很简单,我们只需在TXT中使用多个“变量/值”对,并把每个“变量/值”对用“&”进行分隔。

我们依然利用上面示例的“lv_shiyan.txt”文件,这次把里面的内容换成下面的形式:

neirong1_txt=战胜LoadVar类!

&neirong2_txt=战胜ASP!

&neirong3_txt=我能做FLASH留言板了!

然后再把“lv_shiyan.fla”中的代码换成下面的内容:

System.useCodepage=true;

varshiyan_lv=newLoadVars();

shiyan_lv.load("lv_shiyan.txt");

shiyan_lv.onLoad=function(chenggong){

if(chenggong){

   //获取外部文本内容

   varneirong1=shiyan_lv.neirong1_txt;

   varneirong2=shiyan_lv.neirong2_txt;

   varneirong3=shiyan_lv.neirong3_txt;

   //输出文本内容

   trace("您载入的文本内容是:

"+neirong1+"/"+neirong2+"/"+neirong3);

}else{

   trace("加载失败");

 }

};

运行上面的代码,在输出窗口我们可以看到“战胜LoadVar类!

/战胜ASP!

/我能做FLASH留言板了!

”,说明我们获得了外部TXT中全部的变量内容。

有兴趣的朋友可以把“lv_shiyan.txt”中的内容改成下面的形式看输出结果有没有变化:

&neirong1_txt=战胜LoadVar类!

&neirong2_txt=战胜ASP!

&neirong3_txt=我能做FLASH留言板了!

然后再改成下面的结果再试验一下输出结果:

&neirong1_txt=战胜LoadVar类!

&

&neirong2_txt=战胜ASP!

&

&neirong3_txt=我能做FLASH留言板了!

&

原因其实很简单,自己思考一下拉:

呼呼,好了,LV类先讲到这里了,下面讲讲ASP的基本格式和语法,尤其是输入输出语句。

ASP经过长时间的积淀,其内容非常丰富,但如果仅是为了开发一个简易的留言本,那只需要掌握最基本的输入输出就可以了。

我们新建一个asp_jichu.asp文件,在里面输入“★ASP中基本的输入输出”,然后保存。

OK,这样我们就创建一个ASP文件了。

怎么样?

十分简单吧:

)然后我们在IIS下运行这个ASP文件,就会看到网页上显示“★ASP中基本的输入输出”。

内容虽然能显示,但这样的显示对我们几乎没有任何作用。

ASP为何为ASP?

主要是因为它能完成服务器与客户端的交互,比如它能接收客户端发送的变量,并根据这些变量以特定的方式显示客户需要的信息。

而上面的“asp_jichu.asp”,并没有起到任何交互作用,也就失去了ASP的意义。

在正式开始交互讲解之前,还有必要先讲一下ASP文件的组成。

ASP文件的构成只用一句话就能概括:

所有的ASP语句都以“<%”开始,以“%>”结束。

还有一点需要提示的是,在IIS中,一般默认ASP使用VBScript,但我们使用的是javascript,所以在ASP文件一开始,我们需要加上一句:

<%@LANGUAGE="JAVASCRIPT"%>

切入重点,首先讲如何向ASP传递变量。

方法有两种,即常见的GET和POST方法。

GET方法适用于传递少量内容,一般在2K以内,变量及内容会附加在网址后面,变量以“?

”开头,变量和内容之间同样遵循上一篇中讲的“变量/值”配对原则。

而POST方法,能够传递大量内容,且内容不会显示在网址中。

虽然GET方式传递的内容少,而且不安全,但用来做教程演示却非常直观。

现在我就用这种方式来演示ASP如何接收变量。

还是利用我们开始建立的那个“asp_jichu.asp”文件,在其中输入如下内容并保存:

★ASP中基本的输入输出

<%@LANGUAGE="JAVASCRIPT"%>

<%

varneirong;

//获取网址中变量的内容

neirong=Request("neirong_wangzhi");

//显示变量内容

Response.Write("地址栏传递过来的内容是:

"+neirong);

%>

然后在IIS下运行这个文件,我们会看到网页中显示:

★ASP中基本的输入输出

地址栏传递过来的内容是:

undefined

首先我需要对“asp_jichu.asp”中的语句进行一下讲解,在ASP中,用来接收资料的是“Request”对象,而用来输出内容的是则是“Response”对象的“Write”方法。

需要注意的是,Request接收变量时,需要加上引号,而Response输出变量时,则不需要。

这样一讲,上面的代码便不难理解,一开始我们定义一个变量“neirong”,然后用它记录传递给ASP的变量“neirong_wangzhi”中的内容,最后输出“neirong”。

但是我们并没有对“neirong_wangzhi”进行赋值,所以得到了“undefined”。

现在我们就使用GET方法对变量“neirong_wangzhi”进行赋值,看看效果如何。

前面已经讲过了,GET方法传递的变量及内容会在浏览器网址中显示,其实这个显示是一个中间过程,ASP正是根据这个中间过程,也就是地址栏中的信息来接收变量并进行处理最后输出内容的。

所以我们完全可以利用这个中间过程,直接在浏览器地址栏中进行变量赋值。

打开运行中的“asp_jichu.asp”,并在网址最后加上下面的内容,按回车键,看网页中有何变化?

?

neirong_wangzhi=我要自己做FLASH留言板

哈哈,你看到了吗?

这时网页中显示:

★ASP中基本的输入输出

浏览器传递过来的内容是:

我要自己做FLASH留言板

这说明了什么?

我们接收到地址栏里传递的变量内容了,我们成功了:

疑!

你楞在那里干什么?

怎么不跟我一起欢呼呢?

是不是你GET传递方式还是不太明白?

呵呵,没关系,通过上面的演示,你只需要记住以下知识点就行了:

1,ASP文件的组成方式(所有的语句写在“<%”和“%>”之间)

2,ASP如何接收外界传递的变量(使用Response对象)

3,ASP如何在浏览器中显示内容(使用Response的Write方法)

怎么样,我的要求不高吧?

只要记住以上三点,你就应该完全有信心看懂我下面的内容了,加油!

友情提示:

我们把“asp_jichu.asp”文件中的内容换成下面的形式看网页中显示的内容会不会有变化?

★ASP中基本的输入输出

<%@LANGUAGE="JAVASCRIPT"%>

<%

varneirong;

neirong=Request("neirong_wangzhi");

%>

浏览器传递过来的内容是:

<%Response.Write(neirong)%>

再换成如下形式看有没有变化?

★ASP中基本的输入输出

<%@LANGUAGE="JAVASCRIPT"%>

<%

varneirong;

neirong=Request("neirong_wangzhi");

%>

浏览器传递过来的内容是:

<%=neirong%>

我们会发现以上三种形式得到的结果都一样,由此可见ASP的写法是很灵活的,我们要抓住其本质,不要被各种表面形式迷惑:

)这里需要说明的是最后一种写法的最后一行代码。

<%=neirong%>是一种输出的简写形式,它的作用相当于Response.Write,仅适用于当ASP语句只有一行,且仅输出单纯变量的情况下。

呼呼,ASP的知识暂时知道这么多就OK了,下面激动人心的时刻来到了,我们要开始ASP和FLASH之间的交互了!

经过前两节的学习,我们已经熟悉了LV类的使用,以及ASP的基本格式和输入输出了。

现在我们就来看看这两样东西是怎么融合到一起的。

还记得我在讲LV类的基本知识时所举的TXT那个例子吗?

LV与TXT通讯时,TXT中的数据需要写成“变量/值”配对的格式,其实必须写成这种格式并不是由TXT决定的,它是由LV的特性决定的,也就是说,LV与文本文件通讯需要“变量/值”这种数据格式。

ASP文件其实也是文本文件,ASP与LV进行通讯的时候,它所输出的内容格式也就必须遵循“变量/值”配对的规则。

好吧,让我们从代码中来一个直观的体验吧,我们还用“★LV类基础讲解”那一节中举的那个传递多个变量的例子,还记得那个TXT文件的名字吧:

“lv_shiyan.txt”,好的,现在我们直接把“lv_shiyan.txt”改成“lv_shiyan.asp”,同样把“lv_shiyan.fla”代码中shiyan_lv.load("lv_shiyan.txt")这句里的lv_shiyan.txt也替换为lv_shiyan.asp,然后直接在FLASH编辑环境中按Ctrl+Enter测试影片,我们发现输出窗口输出:

“战胜LoadVar类!

/战胜ASP!

/我能做FLASH留言板了!

”,跟修改之前一样。

昏!

这样也可以!

这算什么?

是FLASH与ASP的通讯吗?

怎么不需要IIS都行?

那是FLASH与TXT通讯吗?

可人家的后缀名明明是“.asp”嘛!

其实这里火山也不是很明白,但我更偏向于把它理解成FLASH与ASP的通讯,只是因为这个ASP文件中没有ASP语句,不需要IIS支持就能显示内容而已。

如果你非要讨个说法,最保守的回答是:

FLASH与文本文件的通讯:

呵呵:

)好了,不忽悠大家了。

上面那一段搞不清楚没关系,其实我从TXT过渡到ASP的目的还是想更直观的告诉大家:

FLASH显示ASP中的内容跟TXT是一致的。

只要我们想办法把ASP输出的数据格式捣鼓成“变量/值”配对就行了!

在TXT中又绕了这么长时间,大家着急了吧,好的,现在我要玩真的了,ASP正式登场:

首先我们把“lv_shiyan.asp”中的内容改成如下形式:

★LV与ASP通讯原理

<%@LANGUAGE="JAVASCRIPT"%>

<%

Response.Write("&neirong1_txt=战胜LoadVar类!

&neirong2_txt=战胜ASP!

&neirong3_txt=我能做FLASH留言板了!

&");

%>

我们先在IIS下运行一下,网页中会显示如下内容:

★LV与ASP通讯原理

&neirong1_txt=战胜LoadVar类!

&neirong2_txt=战胜ASP!

&neirong3_txt=我能做FLASH留言板了!

&

恩!

怎么那么眼熟啊,恭喜你,答对了,这不正是“lv_shiyan.txt”中的内容嘛!

只不过“★”后的标题换成这节的标题了:

)好的,那么,聪明的你,现在是否已经预料到我下一步想干什么呢?

恭喜你,你又答对了,你怎么那么聪明呢,下一步当然就是在FLASH中显示这些数据拉。

说干就干,回到“lv_shiyan.fla”的编辑环境中,再次按Ctrl+Enter测试影片。

哈哈,成功了!

输出窗口显示:

“战胜LoadVar类!

/战胜ASP!

/我能做FLASH留言板了!

”,哈哈哈哈——哎!

说你呢,你笑什么?

我高兴是因为我终于又把你忽悠了,你笑什么呢?

看看我们的“lv_shiyan.asp”文件,我们明明已经写了ASP语句了啊,可怎么还是不需要IIS支持就能直接在FLASH编辑环境中显示呢?

难道我们的FLASH软件是在IIS下运行的吗?

这当然不可能,那到底怎么会事啊?

嘿嘿:

)好了,不头痛大家了,其实,在我们第一次把“lv_shiyan.txt”直接改成“lv_shiyan.asp”并运行影片测试的时候,“lv_shiyan.asp”中的数据已经被读入内存,后来尽管我们又把“lv_shiyan.asp”中的内容改成了ASP特有的输出格式,但由于文件名字没改变,运行影片测试的时候,FLASH还是会直接从内存中提取已经存储过的内容,而上次的内容正好不需要IIS就能显示,碰巧而已:

那如何显示新内容呢?

我们只需要利用随机函数给ASP传递一个没有实际意义的变量就可以了。

我们可以把加载ASP的语句改成下面的样子:

shiyan_lv.load("lv_shiyan.asp?

bianliang="+random(9999));

现在再次在FLASH中测试影片,发现输出窗口显示以下提示:

加载失败

ErroropeningURL"file:

///E|/flashlianxi/flash与asp练习/FLASH与ASP通讯入门级教程/lv_shiyan.asp?

bianliang=5624"

恩!

又有问题了,不是说“bianliang”没有实际意义吗?

怎么会导致“ErroropeningURL”呢?

呵呵:

)其实这里说的“没有实际意义”是针对ASP来说的,更确切的说,是针对浏览器的,还记得我在“★ASP中基本的输入输出”一节中讲的GET传递方式吗?

如果忘了一会儿可以回去复习下。

其实我的建议是你先跟着我的进度把每节彻底弄明白,等我写完后,再通读一边,然后你就完全可以自己动手做个留言板了。

接上面的,既然这个“没有实际意义”不是针对FLASH的,那FLASH肯定就不认识了,它会把“lv_shiyan.asp?

bianliang=5624”全部当成文件名,所以当然找不到这个文件了。

是该拨开云雾见晴天的时候了。

现在我们先在“lv_shiyan.fla”中添加一个动态文本域,并命名为“wenben_txt”,然后把输出代码改动一下,让本来在输出窗口显示的内容显示在动态文本域里,具体改动是把下面第一行代码换成第二行:

trace("您载入的文本内容是:

"+neirong1+"/"+neirong2+"/"+neirong3);

wenben_txt.text=neirong1+"/"+neirong2+"/"+neirong3;

好了,最后再发布“lv_shiyan.swf”和“lv_shiyan.html”到与ASP文件相同的文件夹下,并在IIS下运行“lv_shiyan.html”,你会看到SWF的动态文本域里显示“战胜LoadVar类!

/战胜ASP!

/我能做FLASH留言板了!

”,现在你终于可以放心的欢呼了:

我们终于可以把ASP输出的内容显示在FLASH里了,哈哈……。

先喝口水吧,一眨眼快两个小时了,我怎么写的那么慢啊,加油加油!

上面讲的其实是ASP怎么向FLASH传递资料,这不是真正意义上的交互,交互是双方互动的,现在我们就来看看FLASH怎么向ASP传递资料。

在此之前请保证你还记得我在“★ASP中基本的输入输出”一节中讲的ASP是怎么接收一个变量的,我们还用那一节所用的“asp_jichu.asp”文件,当时我是通过GET方式直接在浏览器地址栏中对“neirong_wangzhi”进行赋值的,并且测试证明ASP确实通过Request接收到了这个变量的值。

现在我们就是要让FLASH做地址栏做的事,我们要通过FLASH对“neirong_wangzhi”进行赋值。

在正式开始之前,我们还有以下工作要完成:

1,在“lv_shiyan.fla”中再添加一个按钮,命名为“tijiao_btn”。

2,把“wenben_txt”这个动态文本域改成输入文本域,取消HTML输出,并更名为:

“shuru_txt”。

3,再添加一个动态文本域,用来接收从ASP传回的资料,命名为:

“shuchu_txt”。

4,把“asp_jichu.asp”中的内容改成下面的内容:

★ASP中基本的输入输出

<%@LANGUAGE="JAVASCRIPT"%>

<%

varneirong;

//获取从FLASH传递过来的变量

neirong=Request("neirong_flash");

//输出要返回到FLASH中的内容

Response.Write("&fanhui_asp=哈,你输入的内容已经传递给ASP,并且又已经从ASP返回到FLASH了,你输入的内容是:

"+neirong);

%>

5,最后把“lv_shiyan.fla”中的代码改成下面的内容:

System.useCodepage=true;

varshiyan_lv=newLoadVars();

tijiao_btn.onRelease=function(){

 //获得输入的文本内容,并把这个内容记录在变量“neirong_flash”中

 //这里相当于已经对变量“neirong_flash”进行了赋值

 shiyan_lv.neirong_flash=shuru_txt.text;

 //将LV对象中储存的所有变量都传递给ASP,不过这里我们只设定了一个,就是我们的“neirong_flash”

 //向ASP传递成功后,我们再把从ASP传递回来的变量还储存在“shiyan_lv”对象中

 shiyan_lv.sendAndLoad("asp_jichu.asp?

bianliang="+random(9999),shiyan_lv,"post");

};

shiyan_lv.onLoad=function(chenggong){

 if(chenggong){

   //输出文本内容

   shuchu_txt.text=shiyan_lv.fanhui_asp;

 }else{

   //输出文本内容

   shuchu_txt.text="加载失败";

 }

};

呼呼,改的东西真不少啊,先不讲代码了,直接发布测试一下吧,先有个直观的认识:

在输入文本框中输入“我要做FLASH留言板”,然后点击提交按钮,你就会看到在动态文本框“shuchu_txt”中马上就会显示:

“哈,你输入的内容已经传递给ASP,并且又已经从ASP返回到FLASH了,你输入的内容是:

我要做FLASH留言板”。

这个例子的源文件也可以直接在下面下载。

小提示:

如果你在浏览器中直接点击刷新不能正确显示更新后的页面和内容,请按如下方式设置IE浏览器:

→工具→Internet选项→设置→钩选“每次访问此页时检查”。

这样我们以后就可以直接利用刷新来测试,不用再担心IIS刷新和内存问题了。

最后我们来对测试过程中的数据流程做一个系统的分析:

∙用户在FLASH的输入文本框“shuru_txt”输入“我要做FLASH留言板”

∙通过“shiyan_lv.neirong_flash=shuru_txt.text;”这句代码把用户输入的内容储存在“shiyan_lv”对象的“neirong_flash”

∙通过“shiyan_lv”对象的“sendAndLoad”方法将它记录的变量都传递给指定的ASP文件

∙在ASP文件中通过“neirong=Request("neirong_flash");”这句代码获得从FLASH的“shiyan_lv”对象传递过来的变量“neirong_flash”

∙ASP接收变量内容后调用Response对象的Write方法利用传递过来的变量内容以“变量/值”配对的

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

当前位置:首页 > 高中教育 > 其它课程

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

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