论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

Flash拖拽问题通用解决代码

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:37:33


 

 

一句注释都没写:
// ActionScript 1.0 & 2.0 :

  1. var target_array = [a_mc, b_mc, c_mc];
  2. var to_where_obj = {};
  3. var initial_position_obj = {};
  4.  
  5. var destination_array = [x1_mc, x2_mc, x3_mc];
  6. var is_occupied_obj = {};
  7.  
  8. for (var i = 0; i < target_array.length; i++) {
  9.     var _mc = target_array[i];
  10.     initial_position_obj[_mc._name] = {_x:_mc._x, _y:_mc._y};
  11.    
  12.     _mc.onPress = function()
  13.     {
  14.         delete is_occupied_obj[to_where_obj[this._name]];
  15.         delete to_where_obj[this._name];
  16.         this.startDrag();
  17.         this.onMouseMove = function()
  18.         {
  19.             updateAfterEvent();
  20.         };
  21.     };
  22.     _mc.onRelease = _mc.onReleaseOutside = function ()
  23.     {
  24.         var is_hit;
  25.         for (var i = 0; i < destination_array.length; i++) {
  26.             var _mc = destination_array[i];
  27.             if (!is_occupied_obj[_mc._name] && this.hitTest(_mc)) {
  28.                 is_occupied_obj[_mc._name] = this;
  29.                 to_where_obj[this._name] = _mc._name;
  30.                 this._x = _mc._x;
  31.                 this._y = _mc._y;
  32.                 is_hit = true;
  33.             }
  34.         }
  35.         if (!is_hit) {
  36.             this._x = initial_position_obj[this._name]._x;
  37.             this._y = initial_position_obj[this._name]._y;
  38.         }
  39.         stopDrag();
  40.         delete this.onMouseMove;
  41.        
  42.     };
  43. }

// ActionScript 3.0 :

  1. var target_array:Array = [a_mc, b_mc, c_mc];
  2. var to_where_obj:Object = new Object();
  3. var initial_position_obj:Object = new Object();
  4.  
  5. var destination_array:Array = [x1_mc, x2_mc, x3_mc];
  6. var is_occupied_obj:Object = new Object();
  7.  
  8. for (var i:Number = 0; i < target_array.length; i++) {
  9.     var _mc = target_array[i];
  10.     initial_position_obj[_mc.name] = {x:_mc.x, y:_mc.y};
  11.     _mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
  12.     _mc.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
  13.     _mc.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
  14. }
  15. function mouseDown(event:MouseEvent):void
  16. {
  17.     var _mc = event.target;
  18.     delete is_occupied_obj[to_where_obj[_mc.name]];
  19.     delete to_where_obj[_mc.name];
  20.     _mc.startDrag();
  21. }
  22. function mouseReleased(event:MouseEvent):void
  23. {
  24.     var is_hit:Boolean = false;
  25.     var des_mc:MovieClip = new MovieClip();
  26.     var tar_mc = event.target;
  27.     tar_mc.stopDrag();
  28.     for (var i:Number = 0; i < destination_array.length; i++) {
  29.         des_mc = destination_array[i];
  30.         if (!is_occupied_obj[des_mc.name] && tar_mc.hitTestObject(des_mc)) {
  31.             is_occupied_obj[des_mc.name] = tar_mc;
  32.             to_where_obj[tar_mc.name] = des_mc.name;
  33.             tar_mc.x = des_mc.x;
  34.             tar_mc.y = des_mc.y;
  35.             is_hit = true;
  36.         }
  37.     }
  38.     if (!is_hit) {
  39.         tar_mc.x = initial_position_obj[tar_mc.name].x;
  40.         tar_mc.y = initial_position_obj[tar_mc.name].y;
  41.     }
  42. }
  43. function mouseMoveHandler(event:MouseEvent):void
  44. {
  45.     event.updateAfterEvent();
  46. }

enjoy! ;)

源文件下载download

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058