2005/09/01 | flash asp调用数据库方法3
类别(flash As) | 评论(4) | 阅读(1385) | 发表于 17:16
第3卷 FlashMX数据库高级间接连接方法
原创: THOR (转载者请保留“作者:THOR”等字样,QQ 488915,Email coolthor@163.com)
声明: 对Actionscript和ASP不感兴趣者以及认为FLASH只能做动画片者,请Get OUT!
留言: 呵呵,本人初来乍到,希望大家多多支持,要是写了文章能加专家分就好了:)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在前面的文章已经给大家讨论了FLASH间接操作数据库的原理和基本方法(LoadVariables语句),本卷将向大家讲述比LoadVariables更强大的LoadVars对象的使用方法

/* -----------------------------------------
闲聊:记得有次和Whose一起回答别人关于FLASH操作数据库的问题时提到了LoadVariables,在我的回答中我一时忘了LoadVariables这个语句的字母拼写,所以只写了LoarVar...,Whose就问我是不是要别人自由发挥,呵呵,其实是我自己忘了这条语句,因为我已经实在记不起来我有多久没用这条语句了,因为后来都是用LoadVars和其它方法来操作数据库了。相信大家在掌握了LoadVars之后也会扔掉LoadVariables
------------------------------------------*/

好了,言归正传,我们现在在开始LoadVars对象之前,再次讨论一下关于ASP中的写法(其它脚本语言如此类推,如ASPX,CGI,PHP等),在前面的文章中我们已经强调了要求在ASP中去掉所有的HTML标记,也就是说不要在ASP中写下任何<html>、<body>、<B>、<A>……等,只能在ASP中写下<%和%>之间的纯ASP脚本,以保证ASP最后的运行结果是:(无空格)
变量名1=值1 & 变量名2=值2 & 变量名3=值3 & 变量名4=值4 ……

也就是说,在ASP中要保证最后的结果是每个变量名(并非ASP中的变量,而是传达到FLASH中的FLASH变量),然后再是一个等号,接着再写这个变量的值(如果这个值中需要空格的话,用+号代替),在ASP中输出结果的方法可以是
<%="..."%>,也可以是<%Response.write "..."%>,两种方法都可以,只是随大家习惯而已,这两种方法对于经常用ASP的朋友来说再熟悉不过了,不过有一点要说明的就是我们在ASP中提倡使用<%="..."%>的方法来输出结果,但我们现在在编写为FLASH服务的ASP文件时,我建议大家还是用<%Response.write "..."%>方法,因为在我们需要的这种ASP文件中是无任何HTML标记的,所以<%Response.write "..."%>比<%="..."%>更直观,我们举例来说:
<%
dim a1,a2,a3,strOutput
a1="Fireworks"
a2="Dreamweaver"
a3="Flash"
strOutput="a1=" & a1 & "&a2=" & a2 & "&a3=" & a3

response.write strOutput
%>

这样的话,当FLASH装载了这个ASP的运行结果之后就会在FLASH中生成a1,a2,a3三个变量,并且自动给这三个变量赋值为"Fireworks","Dreamweaver","Flash",然后我们就可以使用其它的FLASH语句来使用或操作这三个变量。

在大家再次熟悉了ASP的书写方法之后,我们现在就要开始LoadVars对象了,LoadVars对象的原理和LoadVariables类似,也是通过读取文本文件或者ASP等文件的结果,来给FLASH中的变量赋值,但LoadVariables没有回调功能,所以需要建立循环来判断是否已经将结果读入了FLASH,这一点是比较麻烦和低效的,在LoadVars中就不会再如此做了,因为LoadVars在读完了结果之后会自动产生事件,然后通过这个事件我们就已经知道这次的读入已经完成,而且在LoadVars中还可以实现读取进度、仅发送参数、发送参数并回调结果、仅回调结果等多种功能,并且LoadVars除了读取文本文件和ASP等文件结果之外,还另有妙用(这一功能是我瞎胡弄出来的,此功能足以让大家惊讶,呵呵,俺得先留着这个功能多卖点分才行,大家别砸我哈,下部中自然为给大家讲的)

我们先从FLASH的帮助中复制它的属性、方法和事件过来参考一下,我们在本卷中只用关心下面这些内容就行了:

代码 类型 说明
LoadVars.load 方法 从指定的 URL 下载变量。
LoadVars.send 方法 将变量从 LoadVars 对象发布到 URL。
LoadVars.sendAndLoad 方法 将变量从 LoadVars 对象发布到 URL,并将服务器的响应下载到目标对象。

LoadVars.onload 事件 当LoadVars对象完成 load 或 sendAndLoad 等操作时产生。

我们在使用这些方法和事件之前需要先将LoadVars实例化,代码如下:
ASP=new LoadVars(); //格式是: 实例名=new LoadVars(); <--此例中我用的实例名是ASP(实例名的命名和变量名相同,呵呵,顺便告诉大家,在FLASHMX6,可以用中文的变量名和实例名,呵呵,好玩吧,比如说: 后台=new LoadVars();)
好了,我们现在已经创建了一个LoadVars对象的实例,实例名称用的是"ASP",接下来我们开始研究LoadVars的三种方法Load,Send和SendAndLoad:
我们从第一种方法开始,Load的功能是不向ASP发任何参数,直接运行ASP,并将ASP的运行结果收入FLASH;
而第二种方法是首先将参数发向ASP,然后打开ASP文件页面,并执行它,这样的话,我们可以用FLASH做些比如论坛登陆窗口之类的东东
最后第三种方法SendAndLoad也就是我们以后做全版FLASH网站时要经常使用的方法,它是首先将参数发给ASP,然后执行ASP并将执行结果读回到FLASH中来。
注意:Load和SendAndLoad中运行ASP文件时,访问者并不会看到ASP的页面(可以说是后台运行的)

三种方法的代码编写基本类似,由于篇幅字数的限制,我们只讨论其中的SendAndLoad方法,此方法需下面这些步骤完成:
第1步:LoadVars实例化
第2步:添加ASP所需参数
第3步:设置回调函数
第4步:使用SendAndLoad指令

第1步在上面我们已经说过了,现在我们来说一下第2步。所谓的“添加ASP所需参数”也就是一些ASP中,如用户登录信息验证,分类数据列表等等都需要从POST或者GET中获取相关参数,如果要在ASP中获取POST参数的话,用Request.form("参数名")就可以了,如果是要在ASP中获取GET参数的话,那就得用Request.QueryString("参数名"),例如下面的ASP代码:
<%
''检查用户登录 - GET方法参数
dim strUser,strPass,strOutput
strUser=Request.QueryString("user")
strPass=Request.QueryString("pass")

if strUser="THOR" and strPass="abc" then
strOutPut="Yes"
else
strOutput="No"
end if
response.write "aspRect=" & strOutput
''本例只是演示参数的使用,所以没用到数据库,当然在正式的项目应用中的用户登录参数,大家可千万别用GET方法的参数,得用POST才行
%>

我们接着开始在FLASH中为这个ASP写添加参数的代码
function ReadAspRect(){ //创建一个名称为ReadAspRect的函数,此函数将用来分析ASP的返回结果
trace(this["aspRect"]); //弹一个窗口出来显示aspRect变量的值
}

ASP=new LoadVars(); //创建一个名称叫做ASP (当然也可以用其它名称) 的LoadVars对象实例
ASP.user="THOR"; //添加一个值为"THOR"的参数,参数名是user,对应ASP中的user参数
ASP.pass="abc"; //添加一个值为"abc"的参数,参数名是pass,对应ASP中的pass参数
ASP.OnLoad=ReadAspRect; //设置回调函数为ReadAspRect,当ASP结果装载完毕时,FLASH会自动运行R
0

评论Comments

日志分类
首页[193]
flash As[107]
有的没的[59]
数码照片[4]
自由世界[19]
blender[4]