|
 
- 帖子
- 1811
- 积分
- 286
- 技术分
- 69
- 来自
- 广东-揭阳-揭西(莫其空间)
- 在线时间
- 632 小时
- 注册时间
- 2005-5-2
|
10#
发表于 2006-10-17 09:10
| 只看该作者
[b]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[i];
//先得到位于第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[i];
//这里是设置位置数组上的值.都是向前移
} 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[i];
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[i];
} 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的后一个SS[/b][color=Blue]Sample Text[/color]
[[i] 本帖最后由 steamlin 于 2006-10-17 09:13 编辑 [/i]] |
-
-
456-2.fla (112 KB)
-
-
456-2.swf (3.69 KB)
|