• 思缘论坛首页
  • 论坛搜索
  • 下载记录
  • 每日签到
  • 设计软件,PS下载
  • VIP素材区预览
  • 精品套图素材
  • 缘分币充值
 19 12
发新话题
打印

[技术心得] [原创]电脑任务栏功能模拟(上传有源代码)

[原创]电脑任务栏功能模拟(上传有源代码)

var positionArray:Array = new Array();
nums = 5;
for (j=1; j<nums; j++) {
        positionArray[j] = 0;
}
var len:Number = 80;
for (i=1; i<nums; i++) {
        _root[ss+i]._x = -80;
        _root[ss+i]._y = 380;
        _root[ss+i].no = i;
        _root[ss+i].pre = 0;
        _root[ss+i].pos = 0;
        _root[ss+i].nex = 0;
        _root[ss+i].staut = false;
        _root[ss+i].closebtn.onRelease = function() {
                this._parent.staut = false;
                this._parent._x = -80;
                pos = this._parent.pos;
                pre = this._parent.pre;
                if (pre == undefined) {
                        pre = 0;
                }
                if (nex == undefined) {
                        nex = 0;
                }
                nex = this._parent.nex;
                this._parent._x = -80;
                this._parent.staut = false;
                trace(被+pos+个的ss+this._parent.no+被点击了);
                trace(ss+pre+===+ss+this._parent.no+====ss+nex);
                trace(hit ss.pre=+pre);
                if (pre>0) {
                        if (nex>0) {
                                //前有,后有
                                _root[ss+pre].nex = nex;
                                //将前一个SS的NEX属性设置为点击SS的NEX的值.
                                _root[ss+nex].pre = pre;
                                //将被点击的PRE属性值赋给后一个SS的PRE属性
                                _root[ss+nex].pos = _root[ss+nex].pos-1;
                                //将后一个SS向前推移一个位置.
                                _root[ss+nex]._x = _root[ss+nex]._x-80;
                                //设置后一个SS的X坐标.其实就是X坐标向前推80;
                                positionArray[pos] = positionArray[pos+1];
                                //由于被点击的SS会消失,那么,在它后面的SS都会向前推,所以在数组中存放的SS编号也是向前移
                                ////////////////////////////////////以下的一个FOR循环是来使在位于POS+2个位置上的SS向前移一个位置.
                                for (i=pos+2; i<nums+1; i++) {
                                        sno = positionArray;
                                        //先得到位于第POS+2个位子上的SS编号.其实就是得知是哪个SS是在POS+2的位子上.
                                        if (sno>0) {
                                                //如果SNO大于0,则说明了,是有SS在位置POS+2上的.
                                                _root[ss+sno]._x = _root[ss+sno]._x-80;
                                                _root[ss+sno].pos = _root[ss+sno].pos-1;
                                                //以上两个都是设置位于POS+2上的SS的属性
                                                positionArray[i-1] = positionArray;
                                                //这里是设置位置数组上的值.都是向前移
                                        } else {
                                                //如果SNO小于0,则是说明了,在第POS+2的位置上是没有SS的存在的.
                                                positionArray[i-1] = 0;
                                                //所以就是将第i-1个位置设置为空
                                        }
                                }
                                //////////////////////////////////////////////////
                        } else {
                                //前有,后无
                                _root[ss+pre].nex = 0;
                                //因为被点击的SS的后面是没有的.所以只将前一个SS的NEX属性设置为0就行了.
                                positionArray[pos] = 0;
                                //被点击了SS在点击后是会消失的,由于它后面没有的SS的存在,所以就将这个位置设置为空
                        }
                } else {
                        //前无后有这个情况下只需设置后一个SS的PRE属性以及位置及运动;
                        if (nex>0) {
                                positionArray[pos] = positionArray[pos+1];
                                //将前一个位置上的SS编号移到这个被点击的位置上
                                _root[ss+nex].pre = 0;
                                //将后一个SS的NEX属性设置为0
                                _root[ss+nex].pos = _root[ss+nex].pos-1;
                                _root[ss+nex]._x = _root[ss+nex]._x-80;
                                //将后一个的位置及X坐标都向前推移.
                                //////////////////////////////////////以下的一个FOR循环是来使在位于POS+2个位置上的SS向前移一个位置.解释同上
                                for (i=pos+2; i<nums+1; i++) {
                                        sno = positionArray;
                                        if (sno>0) {
                                                _root[ss+sno]._x = _root[ss+sno]._x-80;
                                                _root[ss+sno].pos = _root[ss+sno].pos-1;
                                                positionArray[i-1] = positionArray;
                                        } else {
                                                positionArray[i-1] = 0;
                                        }
                                }
                                ///////////////////////////////////////////
                        } else {
                                //前无,后无
                                positionArray[pos] = 0;
                                //当只有一个SS在任务栏的时侯,当被点击后.要将空上位置设置为空.
                                for (j=1; j<nums; j++) {
                                        trace(positionArray[+j+]=+positionArray[j]);
                                        //= 0;
                                }
                        }
                }
        };
        ////////////////////////////
        _root[bb+i].no = i;
        _root[bb+i].btn.onRelease = function() {
                if (!_root[ss+this._parent.no].staut) {
                        //当被点击的SS.staut为false时,那就是在场景外.可以让它显示了.否则就不做任何处理
                        _root[ss+this._parent.no].staut = true;
                        //当这个SS被点击的后.这个的staut的属性值就应该设为true了.防止重复点击同一个
                        for (j=1; j<6; j++) {
                                //用这个FOR循环是来检测在任务栏中的哪个位置是空的,也就是positionArray数组的值为0
                                if (positionArray[j] == 0) {
                                        //一检测到哪个位置的值为0,则说明,这个j位置是空,那就可以把这个被点击SS放在这个j位置了
                                        positionArray[j] = this._parent.no;
                                        //将这个原本空的positionArray赋上了被点击SS的编号.则说明在这个第j个位置上在SS的存在了
                                        _root[ss+this._parent.no].pos = j;
                                        //设置SS的pos属性,也就是记录SS在任务栏中的位置,
                                        _root[ss+this._parent.no]._x = j*len;
                                        //设置它的X坐标了
                                        _root[ss+this._parent.no].nex = 0;
                                        //每一个被点击出来的SS都是被放在任务栏的最后面.所以它的nex都是为0的.
                                        preno = positionArray[j-1];
                                        //将它前一个位置上(也就是第j-1)的SS编号记录起来
                                        if (preno>0) {
                                                //当preno大于0,则说明在它的前一个位置也就是第j-1个位置上是有SS的存在的
                                                _root[ss+this._parent.no].pre = preno;
                                                //每一个被点击出来的SS,都要记录起放在它前面的那个SS(也就是第j-1个SS)的编号到底是什么.
                                                _root[ss+preno].nex = this._parent.no;
                                                //在它前一个位置上的SS的nex属性就要设置了.因为在它前一个位置也就是第j-1个位置的后面有了SS的存在的.
                                        } else {
                                                //当preno小于0,则说明在它的前一个位置也就是第j-1个位置上根本就没有SS的存在的,则下面将它的pre属性设置为0
                                                _root[ss+this._parent.no].pre = 0;
                                        }
                                        break;
                                }
                        }
                }
        };
}
//ss.staut状态,是显示还是隐藏(既是在场景外)
//ss.position记录当其状态为显示时,所在的位置
//ss.no为唯一编号.
//positionArray记录在任务栏中的哪个位置被占有了.
//ss.pre在任务栏显示的SS的前一个SS
//pre.nex在任务栏显示的SS的后一个SSSample Text

附件

1.jpg (173.25 KB)

2006-10-19 11:58

1.jpg

2.jpg (91.34 KB)

2006-10-19 11:58

2.jpg


本帖最近评分记录

TOP

那两张图是原理图...来着.下面是源文件!

这个在闪吧里我也发:a20过...

附件

456-2.rar (12.83 KB)
缘分币获取 缘分币充值

2006-10-19 12:01, 下载次数: 380


TOP

第一次在这里发技术贴.希望大家支持点啊.

TOP

感谢楼住发这么好的帖子,谢谢了

1

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

楼上的,有什么不明白?

TOP

看不懂!:a04

Cんénɡgāлg

TOP

看8懂....

对代码最头疼啦...

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

技术含量太高
根本看不懂啊!!

TOP

 19 12
发新话题

关于本站 广告服务 联系我们 版权隐私 合作站点 网站地图 免责申明 管理团队

Powered by Discuz Copyright © 2005-2019 www.MissYuan.com All rights reserved.站长QQ8713688 邮箱8713688@qq.com