|

- 帖子
- 217
- 积分
- 41
- 技术分
- 6
- 在线时间
- 111 小时
- 注册时间
- 2008-9-13
|
1#
发表于 2010-1-5 14:33
| 只看该作者
Flash+Asp+Access许愿墙程序。
本帖最后由 kin_1987 于 2010-1-5 15:37 编辑
刚学习AS3 没多久。本来打算是做留言本的,但是后来突然想到 网页版的许愿墙程序了。于是试了一下
先预览下吧。(晕,为什么这个版本的 Discuz! 论坛 插入的flash不能 自定义大小)
预览: http://www.dzhseed.com/kin/QzoneWishWall.swf
或是: http://user.qzone.qq.com/87190493
-----------------------------------------------------------
简单说下原理吧,是基于时间轴做的,代码写的很乱,有3个类 也就是继承了MovieClip。
提交许愿:(使用到 Add_wish.as 文件)
提交许愿 我做了一个基于MC的类
然后就是获取用户填写的数据提交给URLVariables()
背景的获取有点小困难。它不是类似表单中的提交 工具,必须要自己做。
把 用户名.text 和 许愿内容.text 以及用户点击那个颜色的图片的编号 获取到 (有点象伪代码哦,不过这样看着方便嘛,我写着也舒服。呵呵)
然后声明一个 ASP_URLVariables = new URLVariables(); 把值传给他。
ASP_URLVariables.swf_wishName = wishName_Input.text //用户名
ASP_URLVariables.swf_wishContent = wishContent_Input.text //许愿内容
ASP_URLVariables.swf_wishPaperBg = paper_bg_selcetNUM //背景编号
上面蓝色文字是 你自己定义的,用在ASP页面获取到值的。如果你会ASP 下面语句你会很熟悉。呵呵
(addwish_post.asp 页面部分代码)
<%
asp_wishName = request("swf_wishName")
asp_wishContent = request("swf_wishContent")
asp_wishPaperBg = request("swf_wishPaperBg")
%>
再用一个 ASP_URLRequest = new URLRequest("http://www.dzh****.com/kin/asp/addwish_post.asp"); 里面的ASP地址就是flash 要提交给他处理的,要使用绝对路径。
然后把上面ASP_URLVariables的值 传给这个 ASP_URLRequest的data
ASP_URLRequest.data = ASP_URLVariables;
ASP_URLRequest.method = URLRequestMethod.POST; //使用POST方式 传递 数据,默认是GET。所以这句要写上。
最后再加载这个 http://www.dzh****.com/kin/asp/addwish_post.asp
ASP_URLLoader.load(ASP_URLRequest) //这样数据就传给ASP了,
ASP_URLLoader.addEventListener(IOErrorEvent.IO_ERROR,ASP_URLLoader_IOError); //侦听传递过程中是否出错
ASP_URLLoader.addEventListener(Event.COMPLETE,ASP_URLLoader_Complete);//传递完成,返回一个值 给flash.。自己设定 代表成功了。
addwish_post.asp 页面代码:- <%
- asp_wishName = request("swf_wishName")
- asp_wishContent = request("swf_wishContent")
- asp_wishPaperBg = request("swf_wishPaperBg")
- set conn =Server.CreateObject("adodb.connection")
- connPD = "rovider=Microsoft.Jet.OLEDB.4.0"
- connDS = "Data Source="&Server.MapPath("QWW#DB.mdb")
- connOpenSTR = connPD&";"&connDS
- conn.Open connOpenSTR
- sql = "insert into wishlist(wishName,wishContent,wishPaper) values('"&asp_wishName&"','"&asp_wishContent&"',"&asp_wishPaperBg&")"
- set rs = conn.execute(sql)
- response.write "true"
- %>
复制代码 从上面asp页面代码 最后一句看出如果传递和写入库成功 回返回一个 字符串 "true" 给flash.
然后flash里面
private function ASP_URLLoader_Complete(e:Event){
if(e.target.data=="true"){
trace("数据提交成功")
}
OK, 提交页面搞定,下面继续
读取许愿纸条:(使用到 QWW_paper.as 文件)
读取 纸条,我做了一个 基于MC的 类,传递参数过去。
上面3个 TextField。分别用来显示各项信息的,
只要声明一个自定义的 QWW_paper 类,然后传参数给它就OK 了。
public function QWW_paper(wisherTimes:String,wisherDate:String,wisherContent:String,wishName:String,wishPaper:String)
上面是这个类的 构造函数,我分别传递了,许愿条的 序号、许愿时间、许愿内容、许愿者姓名、背景编号。
这样做 使用的时候很简单。
好了,下面 开始读取了,
首先是ASP页面(readwish.asp)
先要使用ASP 把 用户提交到数据库中的内容给读出 并 使用response.write 给输出 供flash 读取。
一开始是想使用XML的。但是ASP生成和增删改查XML有点麻烦,所以直接使用了 ASP输出 只要输出 有规律合理一样可以很轻易的 分隔信息。
下面看看 readwish.asp 页面的 代码:- <%
- set conn =Server.CreateObject("Adodb.Connection")
- connPD = "rovider=Microsoft.Jet.OLEDB.4.0"
- connDS = "Data Source="&Server.MapPath("QWW#DB.mdb")
- connOpenSTR = connPD&";"&connDS
- conn.Open connOpenSTR
- sql = "select * from wishlist"
- set rs = conn.execute(sql)
- if rs.bof and rs.eof then
- response.write("false")
- response.end
- end if
- while not rs.eof
- response.write rs("id")
- response.write "*"
- response.write rs("wishName")
- response.write "*"
- response.write rs("wishContent")
- response.write "*"
- response.write rs("wishDate")
- response.write "*"
- response.write rs("wishPaper")
- response.write "***"
- rs.movenext
- wend
- rs.close()
- set rs = nothing
- set conn = nothing
- %>
复制代码 看出来了 我是怎么分隔的了吗? 恩,使用一个“*” 分隔单个许愿者的 各项信息,使用“***”分隔 每个许愿者。
然后是在Flash 页面读取。
var AllInfoArr:Array = new Array(); //储存从readwish.asp读取的全部许愿者数据
var InfoArr:Array = new Array(); //储存单个许愿者 数据
var ranNumURL:String = "http://www.dz****.com/kin/asp/readwish.asp?r="+Math.random()*10000000 //加上随机数 防止缓存!
var GetASP_URLRequest:URLRequest= new URLRequest(ranNumURL);
var GetASP_URLLoader:URLLoader= new URLLoader();
GetASP_URLLoader.load(GetASP_URLRequest);
GetASP_URLLoader.addEventListener(Event.COMPLETE,GetASP_URLLoader_Complete) //侦听 加载完成
下面在flash中 提取单个许愿者
function GetASP_URLLoader_Complete(e:Event){ // 加载完成后执行
AllInfoArr = e.target.data.split("***")
for each(var i:String in AllInfoArr){
InfoArr.push(i.split("*"))
}
addWishTostage();// 把信息显示在许愿纸条上面 在下面
}
- function addWishTostage(){ // 把信息显示在许愿纸条上面
- for(var i:uint=0;i<InfoArr.length-1;i++){
- this["myQWW_paper"+i] = new QWW_paper(InfoArr[0],InfoArr[3],InfoArr[2],InfoArr[1],InfoArr[4]);
- this["myQWW_paper"+i].x = Math.random()*stage.stageWidth;
- this["myQWW_paper"+i].y = Math.random()*stage.stageHeight;
- paper_BOX.addChild(this["myQWW_paper"+i])
- if(i==InfoArr.length-2){ //如果是最新的字条,则发光突出显示!
- var filter1:GlowFilter = new GlowFilter()
- with(filter1){
- alpha = 0.6;
- blurX = 12;
- blurY = 12;
- color = 0xff0000;
- strength = 2;
- }
- this["myQWW_paper"+i].filters = [filter1]
- }
- }
- }
复制代码 到此 已经差不多了。 剩下的就是 发生错误的时候显示提示信息,我也做了一个类。这里就不说了。
最后把源文件附上。 |
|