MyGameMyLove.com
| 发表时间:2008-5-27 13:15:00 先看效果: 这个例子,主要用到就是上次发布的代码: mc电影符号设置深度值的方法 http://www.mygamemylove.com/t_html/573.html 因为我们在拖动某一个装备的时候都要让他在最前。不然后就会被叠在下边,这个不是我们希望的。 原理简单的说一下:就是循环给每一个装备加上事件: 按下:拖动该装备 松开:测试是否在拖动动目标区域,如果在就不显示.如果不在,就返回到原来的位置。 放在上面:相应的大图显示还有效果。 代码: stop(); //游戏中的装备栏装备的拖动 //flash原创代码尽在 www.MyGameMyLove.com //2008-5-27 整理 smallerbird //电影符号深度从小到大 //这里用到上次的代码功能:mc电影符号设置深度值的方法 http://www.mygamemylove.com/t_html/573.html var arr:Array = [btn2, btn1, btn3, btn4, btn8, btn7, btn5, btn6, btn9, btn10]; //setDepth (mc:要指定深度的电影符号,位置(注:从0开始), 排序数组) function setDepth (mc:MovieClip, num:Number, arr:Array) { //找到设置深度mc的位置 var numI:Number = 0; for (var i = 0; i < arr.length; i++) { if (arr[i] == mc) { numI = i; break; } } //移位并用mc.swapDepths()换深度 if (numI > num) { for (var i = numI; i > 0; i--) { arr[i].swapDepths (arr[i - 1]); var mcTem:MovieClip = arr[i]; arr[i] = arr[i - 1]; arr[i - 1] = mcTem; } } else if (numI < num) { for (var i = 0; i < numI; i++) { arr[i].swapDepths (arr[i + 1]); var mcTem:MovieClip = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = mcTem; } } } //用于保存当前拖动的mc var mcDrag:MovieClip; //是否可以拖动 var isDrag:Boolean = true; // var numEndFrame:Number=158 //处理 function thisDo () { mcDrag.stopDrag (); mcDrag._visible=false } // for (var i = 1; i <= 10; i++) { //效果 _root["eBak" + i]._visible = false; _root.eTak["mc" + i]._visible = false; // _root["btn" + i].lastx = _root["btn" + i]._x; _root["btn" + i].lasty = _root["btn" + i]._y; _root["btn" + i].value = i; _root["btn" + i].onPress = function () { if (!isDrag) { return false; } // if(_root._currentframe!=_root.numEndFrame){ _root.gotoAndStop(_root.numEndFrame) } // _root["eBak" + this.value]._visible = false; _root.eTak["mc" + this.value]._visible = false; // if (mcDrag != undefined) { mcDrag.stopDrag (); mcDrag._x = mcDrag.lastx; mcDrag._y = mcDrag.lasty; } mcDrag = this; _root.setDepth (this, 0, _root.arr); startDrag (this, true); }; _root["btn" + i].onRollOver = function () { _root["eBak" + this.value]._visible = true; _root.eTak["mc" + this.value]._visible = true; }; _root["btn" + i].onDragOut = _root["btn" + i].onRollOut = function () { _root["eBak" + this.value]._visible = false; _root.eTak["mc" + this.value]._visible = false; }; } someListener = new Object (); someListener.onMouseUp = function () { if (!isDrag) { return false; } _root["eBak" + mcDrag.value]._visible = false; _root.eTak["mc" + mcDrag.value]._visible = false; //检测是否到了拖动的目标 if (mcDrag.hitTest (_root.mcHit)) { _root.thisDo (); } else { // mcDrag.stopDrag (); mcDrag._x = mcDrag.lastx; mcDrag._y = mcDrag.lasty; } }; Mouse.addListener (someListener); //恢复装备的位置 btnIni.onRelease=function(){ for (var i = 1; i <= 10; i++) { _root["btn" + i]._visible=true _root["btn" + i]._x = _root["btn" + i].lastx; _root["btn" + i]._y= _root["btn" + i].lasty; } } |

