打印

[服务器端交互] 手痒,做了个FLASH+XML相册(添加注释)

在经典看到一个flash图片展示站点,自己也手痒了,做了一个,功能比较简单,但界面看着还比较舒服

小更新了一下,当点击大图片时在新窗口打开原图片

浏览地址:http://www.healdream.com/upload/flash/stage.html

全部AS(写的比较粗糙,见笑了,如果看得比较类的话,可以复制到flash里再看):
复制内容到剪贴板
代码:
import flash.filters.GlowFilter;
this["loading_mc"]._visible = false;//将Loading设为不可见
var myXML:XML = new XML();
var img_url;//定义图片地址
var pages = 1;//设定刚开始的页码
var cur_page=1;//当前页码
var img_nums = 11;//每页的图片数
var img_intr:Array=new Array();//用来存放说明的数组
var s_img:Array = new Array();//用来存放小图片地址的数组
var b_img:Array = new Array();//用来存放大图片地址的数组
var myMCL:MovieClipLoader = new MovieClipLoader();//这个是用来加载大图片的
var myObj:Object = new Object();
myObj.onLoadInit = function(mc) {
    _root.loading_mc._visible = false;//将loading设为隐藏
    //设置图片的宽和高
    mc._width = Stage.width;
    mc._height = Stage.height;
    //定义鼠标滑过事件
    mc.onRollOver = function() {
        //将消息条由舞台外移到舞台内,当y坐标变为0时删除帧循环
        _root.info_mc.onEnterFrame = function() {
            this._y += 8;
            if (this._y>=0) {
                this._y = 0;
                delete this.onEnterFrame;
            }
        };
    };
    //定义鼠标滑出事件,将消息条重新放到舞台外
    mc.onRollOut = function() {
        _root.info_mc._y = -40;
    };
    //当鼠标按下时在新的窗口打开图片
    mc.onRelease=function(){
        getURL("http://www.healdream.com/upload/flash/"+img_url,"_blank");
    }
};
myMCL.addListener(myObj);
//这个是用来加载小图片的
var mySmallMCL:MovieClipLoader = new MovieClipLoader();
var mySmallObj:Object = new Object();
mySmallObj.onLoadInit = function(mc) {
    //小图片加载完后设置宽高和坐标
    mc._width = 53;
    mc._height = 53;
    mc._x = 1;
    mc._y = 1;
};
mySmallMCL.addListener(mySmallObj);
//定义发光滤镜
var glow:GlowFilter = new GlowFilter(0xffffff, 0.7, 3, 3, 2, 3);
//载入xml文件
myXML.load("list.xml");
myXML.ignoreWhite = true;
myXML.onLoad = function(suc) {
    if (suc) {
        //将里面的一些值放到之前定义的三个数组里
        for (var i = 1; i<=myXML.firstChild.childNodes.length; i++) {
            s_img.push(myXML.firstChild.childNodes[i-1].attributes.path);
            b_img.push(myXML.firstChild.childNodes[i-1].firstChild.nodeValue);
            img_intr.push(myXML.firstChild.childNodes[i-1].attributes.intr);
        }
        //计算出总页数
        pages = Math.ceil(myXML.firstChild.childNodes.length/img_nums);
        //让舞台上的11个mc分别加载小图片,并定义鼠标事件
        for (var i = 1; i<=11; i++) {
            var mc:MovieClip = _root["holder_"+i+"_mc"].createEmptyMovieClip("mc", 100+i);
            mySmallMCL.loadClip(s_img[i-1], mc);
            //将小图片地址赋给当前的mc
            _root["holder_"+i+"_mc"].img = b_img[i-1];
            _root["holder_"+i+"_mc"].i=i-1;
            //当鼠标滑过时,发光
            _root["holder_"+i+"_mc"].onRollOver = function() {
                this.filters = [glow];
            };
            //当鼠标移出时复原
            _root["holder_"+i+"_mc"].onRollOut = function() {
                this.filters = "";
            };
            //当鼠标按下时,加载大图片
            _root["holder_"+i+"_mc"].onPress = function() {
                _root.info_mc.info_txt.text=img_intr[this.i];
                img_url=b_img[this.i];
                myMCL.loadClip(this.img, pic_holder_mc);
                _root.loading_mc._visible = true;
            };
        }
        //定义当前页为1
        cur_page = 1;
    }
};
//前一页按钮
pre_mc.onRelease = function() {
    get_pre();
};
//后一页按钮
next_mc.onRelease = function() {
    get_next();
};
function get_next() {
    //计算当前页与总页数
    if (cur_page<pages && pages != 1) {
        cur_page++;
        //定义起始的图片
        start_num = (cur_page-1)*img_nums;
        //加载下一页的图片
        for (var i = 1; i<=11; i++) {
            //当当前图片数大于总图片数时,卸载之前加载的图片
            if (start_num+i>s_img.length) {
                mySmallMCL.unloadClip(_root["holder_"+i+"_mc"].mc);
            }
            _root["holder_"+i+"_mc"].i=start_num+i-1;
            _root["holder_"+i+"_mc"].img = b_img[start_num+i-1];
            mySmallMCL.loadClip(s_img[start_num+i-1], _root["holder_"+i+"_mc"].mc);
        }
    }
}
function get_pre() {
    if (cur_page>1) {
        cur_page--;
        //定义起始页
        start_num = (cur_page-1)*img_nums;
        //当当前图片数大于图片总数时退出循环
        for (var i = 1; i<=11; i++) {
            if (start_num+i>s_img.length) {
                break;
            }
            _root["holder_"+i+"_mc"].i=start_num+i-1;
            _root["holder_"+i+"_mc"].img = b_img[start_num+i-1];
            mySmallMCL.loadClip(s_img[start_num+i-1], _root["holder_"+i+"_mc"].mc);
        }
    }
}
源文件下载地址:http://www1.51files.com/?XMAHC7LUEJXS1RI5CAUR

[ 本帖最后由 lzyy 于 2007-1-30 12:01 编辑 ]
本帖最近评分记录
  • mirycat 威望 +2 原创内容 2007-1-30 03:11

好啊
我也做了一个简单的,但是有问题
亲爱的楼主能帮我看看我写的读取xml载入外部图片吗?谢谢啦
http://bbs.blueidea.com/thread-2717187-1-1.html

[ 本帖最后由 Moonscape 于 2007-1-30 03:10 编辑 ]
别太CCTV了吧。

TOP

认证您的手机,获得手机认证图标, 更多手机认证的好处
全部as。我理解成界面也是as画的了……
支持楼主。
怀才就像怀孕...

TOP

楼主,你能不能给我一个FLASH的留言板样板呢?
我不会写那些东西,只能拿着别人的改,从网上下下来的没有数据库,你能不能帮帮我给我一个呢?
写点什么好呢?别光看啦,帮我想想撒。

TOP

谢谢,学习
…………

TOP

解释一下代码吧,大哥
…………

TOP

上海乐纷数码招聘

我公司现急需FLASH程序员.会原画的和FLASH的人才,请及时和我们联系,公司电话:33772759,大连路990号506室."海上海新城"

TOP

建议加注释啊   要不看着累死人了 。。。。
看了老半天才看几行

TOP

喜欢!

TOP

TOP

鼠标离开时,介绍返回的有点生硬,改柔和点会更好了

TOP

学习!!!!!!!!

TOP

八楼的!请问如何做到全荧幕呢?可以哀放原码吗?
感谢!

TOP

里有两张图片还挺酷的,直接传到我的相册里了!

TOP

用较小尺寸的图片来做预览确实比较好,我之前也是这么做的,不过我做了用户上传图片的功能以后就用大图做预览了,要想让服务器自动修改图片的尺寸大小比较麻烦!

TOP

老大你的相册加载小图时没有LAODING呀..好难等
可不可以加一个呀....
www.kinr.net/blog

TOP

楼主能不能修改一下啊?就是当点击小图片后,让它有个白色的框,表示目前浏览的图片,,,我在你的基础上修改了一下,没有成功!
坚持

TOP

楼上怎么这样子的?
我的Blog:
http://www.asv5.cn/blog/
欢迎大家加入Flash侠客群,无论新老手,均一视同仁:25694172

TOP

引用:
原帖由 HBrO 于 2007-4-20 17:45 发表
楼上怎么这样子的?
:D :D :D

TOP

来晚了,找不着了啊

TOP

打开怎么是个国外网站,根本就没有flash
潔靜精微

TOP

回复 #13 everq 的帖子

我把控制文字的出现的代码改成这个,然后把帧调整为30fps.这样就流畅点
this._y =this._y + (0-this._y)/3

TOP

LZ...许多细节的地方没处理噢

TOP

提醒:最后回贴距现在 520 天,请不要无意义回复
list.xml没有啊

TOP