本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2013-01-17 · 原址 http://space.flash8.net/bbs/thread-388609-1-1.html ← Flash 保存计划
返回列表 回复 发帖

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的类
1.jpg
2010-1-5 14:46


然后就是获取用户填写的数据提交给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 页面代码:
  1. <%
  2. asp_wishName = request("swf_wishName")
  3. asp_wishContent = request("swf_wishContent")
  4. asp_wishPaperBg = request("swf_wishPaperBg")

  5. set conn =Server.CreateObject("adodb.connection")
  6. connPD = "rovider=Microsoft.Jet.OLEDB.4.0"
  7. connDS = "Data Source="&Server.MapPath("QWW#DB.mdb")

  8. connOpenSTR = connPD&";"&connDS

  9. conn.Open connOpenSTR

  10. sql = "insert into wishlist(wishName,wishContent,wishPaper) values('"&asp_wishName&"','"&asp_wishContent&"',"&asp_wishPaperBg&")"

  11. set rs = conn.execute(sql)
  12. response.write "true"
  13. %>
复制代码
从上面asp页面代码 最后一句看出如果传递和写入库成功 回返回一个 字符串 "true" 给flash.

然后flash里面
private function ASP_URLLoader_Complete(e:Event){
  if(e.target.data=="true"){
   trace("数据提交成功")
}
OK, 提交页面搞定,下面继续


读取许愿纸条:(使用到 QWW_paper.as 文件)

读取 纸条,我做了一个 基于MC的 类,传递参数过去。
2.jpg
2010-1-5 15:29
3.jpg
2010-1-5 15:29


上面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 页面的 代码:
  1. <%

  2. set conn =Server.CreateObject("Adodb.Connection")
  3. connPD = "rovider=Microsoft.Jet.OLEDB.4.0"
  4. connDS = "Data Source="&Server.MapPath("QWW#DB.mdb")

  5. connOpenSTR = connPD&";"&connDS

  6. conn.Open connOpenSTR

  7. sql = "select * from wishlist"
  8. set rs = conn.execute(sql)

  9. if rs.bof and rs.eof then
  10. response.write("false")
  11. response.end
  12. end if

  13. while not rs.eof
  14. response.write rs("id")
  15. response.write "*"
  16. response.write rs("wishName")
  17. response.write "*"
  18. response.write rs("wishContent")
  19. response.write "*"
  20. response.write rs("wishDate")
  21. response.write "*"
  22. response.write rs("wishPaper")
  23. response.write "***"
  24. rs.movenext
  25. wend

  26. rs.close()
  27. set rs = nothing
  28. set conn = nothing
  29. %>
复制代码
看出来了 我是怎么分隔的了吗?   恩,使用一个“*” 分隔单个许愿者的 各项信息,使用“***”分隔 每个许愿者。

然后是在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();// 把信息显示在许愿纸条上面 在下面
}

  1. function addWishTostage(){ // 把信息显示在许愿纸条上面

  2. for(var i:uint=0;i<InfoArr.length-1;i++){
  3. this["myQWW_paper"+i] = new QWW_paper(InfoArr[0],InfoArr[3],InfoArr[2],InfoArr[1],InfoArr[4]);
  4. this["myQWW_paper"+i].x = Math.random()*stage.stageWidth;
  5. this["myQWW_paper"+i].y = Math.random()*stage.stageHeight;
  6. paper_BOX.addChild(this["myQWW_paper"+i])
  7. if(i==InfoArr.length-2){ //如果是最新的字条,则发光突出显示!
  8. var filter1:GlowFilter = new GlowFilter()
  9. with(filter1){
  10. alpha = 0.6;
  11. blurX = 12;
  12. blurY = 12;
  13. color = 0xff0000;
  14. strength = 2;
  15. }
  16. this["myQWW_paper"+i].filters = [filter1]
  17. }
  18. }
  19. }
复制代码
到此 已经差不多了。 剩下的就是 发生错误的时候显示提示信息,我也做了一个类。这里就不说了。
最后把源文件附上。

FlashWishWall.part1.rar (878.91 KB)

FlashWishWall.part2.rar (785.27 KB)

AS3.0
沙发自己做下。。。    代码很多地方写的自己感觉不妥,以后会改的。 大虾勿笑。 收益的 记得顶下。。 呵呵。。
AS3.0
本帖最后由 kin_1987 于 2010-1-10 11:59 编辑

今天又做了,后台管理, 是直接在flash的中后台管理,可以删除许愿和修改帐号,改天有时间了,发上来。。
哎,看了没人回太打击了,想想当时自己找flash和asp交互的例子找了很久都没找到,会了这个例子。flash web 基本没问题了。

(这次更新又把字条样式给改了)

下面是这次的更新的功能截图预览:

1.jpg
2010-1-10 01:13


2.jpg
2010-1-10 01:13


sd.jpg
2010-1-10 11:59


3.jpg
2010-1-10 01:13


4.jpg
2010-1-10 01:13
AS3.0
顶!!!楼主我顶你了!
一直被超越从未被模仿
:lol楼主加油!光看不顶,不和谐
一直被超越从未被模仿
不错,楼主加油!
写的挺好的
楼主厉害,我想弄一个留言版呢,可惜不会ASP
8# daysun

恩,不会asp 会其他后台语言也行啊。 原理一样的。
如果不会后台语言,那先学学asp吧,和flash结合起来很不错的。网上就视频教程。
AS3.0
十分佩服楼主 做的很好
今天又做了,后台管理, 是直接在flash的中后台管理,可以删除许愿和修改帐号,改天有时间了,发上来。。
哎,看了没人回太打击了,想想当时自己找flash和asp交互的例子找了很久都没找到,会了这个例子。flash web  ...
kin_1987 发表于 2010-1-10 01:14
:lol好贴帮顶呵呵,后台管理也传上来啊随便看看代码没事干能传后台看看嘛 ???
不错  又学习了
不错!学习下!
嗯,不错,简单实用。再纸条上再加个关闭按钮更好了,还有,再加上查找的话更完善,比如我想查看XXX的许愿
谁说没人顶。。我顶你。。兄弟留个联系方式吧。。向你学习。。
nice
不错!顶一下!
好好学习,天天向上!
下下来瞧瞧
在本地测试数据加载不成功,可以发一份连asp主页的源文件吗?QQ:962770982或邮箱:room90176@126.com
做得不错,学习了
学习了!!
返回列表