- 在线时间
- 7693 小时
- 专家
- 0
- UID
- 390132
- 注册时间
- 2007-8-23
- 帖子
- 13099
- 精华
- 0
- 积分
- 26181
- 居住地
- 重庆市 永川市
- 离线
- 0 天
- 帖子
- 13099
- 体力
- 26131
- 威望
- 10
- 居住地
- 重庆市 永川市
|
发表于 2007-9-12 19:43:16
|显示全部楼层
刚才没事干,来试试这个功能的实现。
思路:
用ASP的FSO(这个思路是闪吧一位朋友在回贴中提到的,所以我才想起要做这个东东,呵呵)对象来扫描同文件夹下的JPG图片,并输出文件名
这里用ASP输出XML格式让FLASH加载,虽然不不太喜欢XML,但大家都觉得它规范一些,就输出它吧。
先看演示地址:
http://www.flash023.cn/test/jpg/jpg.swf
我的文件夹中只放了9个图片,但无论添加还是减少都直接上传或者删除就行了,不需要去改FLASH也不需要修改ASP
费话少说,代码+注释+源文件如下(IIS环境测试才有效):
FLASH中的代码:
- import flash.filters.BlurFilter;
- import flash.filters.DropShadowFilter;
- ////============初始化===========
- var b_filters:BlurFilter = new BlurFilter(5, 5, 1);
- var d_filters:DropShadowFilter = new DropShadowFilter(5, 45, 0, 80, 10, 10);
- var n:Number = new Number();
- var url_array = new Array();
- //这里是设置SWF与ASP的相对路径,虽然可以在ASP中比较得出,但感觉没有必要
- var path_str:String = "images/";
- function go_func() {
- if (n<url_array.length-1) {
- n++;
- load_func();
- } else {
- trace("加载完成!");
- }
- }
- //============MCL类===========
- var _mcl:MovieClipLoader = new MovieClipLoader();
- this.onLoadInit = function(_mc:MovieClip) {
- _mc._txt.removeTextField();
- _mc._width = 80;
- _mc._height = 80;
- _mc.filters = [b_filters, d_filters];
- //============这里设置鼠标动作===========
- _mc.onRollOver = function() {
- this.filters = null;
- };
- _mc.onRollOut = function() {
- this.filters = [b_filters, d_filters];
- };
- go_func();
- };
- //如果没有下面的代码,就会一个加载出错,导致后面的都不能加载,用这个可以出错时继续向下加载,源文件中我故意少了一个图片,让它出错
- this.onLoadError = function(_mc:MovieClip) {
- _mc.createTextField("_txt", 200, 20, 10, 60, 30);
- _mc._txt.textColor = 0xff0000;
- _mc._txt.text = "加载失败!";
- go_func();
- };
- //=========加载进度显示==============
- this.onLoadProgress = function(_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
- _mc.createTextField("_txt", 200, 20, 10, 60, 30);
- _mc._txt.textColor = 0xff0000;
- _mc._txt.text = Math.floor((bytesLoaded/bytesTotal*10000)/100)+"%";
- };
- _mcl.addListener(this);
- //=================load函数========
- function load_func() {
- this.createEmptyMovieClip("pic_mc"+n, n+100);
- //如果要改成竖向加载,只需把下面的_x _y换一下就行了
- this["pic_mc"+n]._y = 30+Math.floor(n/3)*100;
- this["pic_mc"+n]._x = 100+n%3*100;
- _mcl.loadClip(path_str+url_array[n], this["pic_mc"+n]);
- }
- //===========XML文件加载=========
- var url_xml = new XML();
- url_xml.ignoreWhite = true;
- url_xml.onLoad = function(suc) {
- if (suc) {
- for (var d:Number = 0; d<this.firstChild.childNodes.length; d++) {
- url_array.push(this.firstChild.childNodes[d].firstChild.nodeValue);
- }
- load_func();
- } else {
- trace("XML文件加载失败!");
- }
- };
- url_xml.load(path_str+"showjpg.asp");
复制代码
ASP:
- <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
- <%
- Dim thisPath,FSO,fileItem,allFolder
- thisPath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME")) '得到ASP文件的路径
- Set FSO = createobject("scripting.filesystemobject")'创建FSO对像
- Set allFolder = FSO.GetFile(thisPath).parentfolder.files '得到ASP所在目录的父级对像,它就包括了这个ASP和我们放的图片
- Response.write("<?xml version=""1.0"" encoding=""utf-8""?>")'开始输出XML
- Response.ContentType = "text/XML"
- Response.Write("<path>")
- For Each fileItem In allFolder '想当于FLASH中的遍历,遍历整个对像中的元素
- If lcase(right(fileItem.name,4))=".jpg" Then '如果后缀是JPG
- Response.Write("<url>"+fileItem.name+"</url>")'就把它的文件名输出为XML的一个新节点
- End If
- Next
- Response.Write("</path>")
- Response.End()
- %>
复制代码
[ 本帖最后由 HBrO 于 2007-9-12 21:05 编辑 ] |
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
-
总评分: 威望 + 2
查看全部评分
|