拖拽

 dahanRoleLetter = letterModule.factory.create() as DaHanRoleLetter;
   PopUpManager.addPopUp(dahanRoleLetter,dahanFlex);
   PopUpManager.centerPopUp(dahanRoleLetter);
   var componentDrag:ComponentDrag = new ComponentDrag(dahanFlex,dahanRoleLetter,dahanRoleLetter.letTitle,dahanFlex.stage,null);

 

 

 

===============================================

 

 

// ActionScript file
package com.dahan.util
{
 import flash.display.DisplayObject;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.geom.Rectangle;
 
 import mx.core.UIComponent;
 import mx.managers.DragManager;
 public class ComponentDrag{
  /**
   * 声明要拖动的窗口的约束窗口
   */
  private var father:UIComponent;
  /**
   * 声明要拖动的窗口
   */
  private var child:UIComponent;
  
  /**
   * 可选,声明拖动面板主操作区的一个覆盖容器(如果主面板道具也有拖动,在主面板拖动时禁止了格子道具的拖动)
   **/
  private var model:UIComponent;
  /**
   * 声明舞台
   */
  private var stage:DisplayObject;
  /**
   * 事件的宽度
   */
  private var img:UIComponent;
  private var height:Number;
  /**
   * 带参构造
   * 参数为:
   * father:UIComponent---要拖动窗口的约束窗口
   * child:UIComponent---要拖动的窗口
   * stage:DisplayObject---舞台
   * model---可选,声明拖动面板主操作区的一个覆盖容器(如果主面板道具也有拖动,在主面板拖动时禁止了格子道具的拖动)
   */
  public function ComponentDrag(father:UIComponent,child:UIComponent,img:UIComponent,stage:DisplayObject,model:UIComponent){
   this.setChild(child);
   this.setFather(father);
   this.setStage(stage);
   this.setHeight(height);
   this.setImg(img);
   this.model = model;
   init();
  }
  public function setHeight(height:Number):void{
   this.height=height;
  }
  public function getHeight():Number{
   return height;
  }
  /**
   * father:UIComponent的set方法
   */ 
  public function setFather(father:UIComponent):void{
   this.father=father;
  }
  /**
   * father:UIComponent的get方法
   * 返回值为father:UIComponent
   */
  public function getFather():UIComponent{
   return father;
  }
  /**
   * child:UIComponent的set方法
   */ 
  public function setChild(child:UIComponent):void{
   this.child=child;
  }
  /**
   * child:UIComponent的get方法
   * 返回值为 child:UIComponent
   */
  public function setImg(img:UIComponent):void{
   this.img=img;
  }
  public function getImg():UIComponent{
   return img;
  }
  public function getChild():UIComponent{
   return child;
  }
  /**
   * stage:DisplayObject的set方法
   */
  public function setStage(stage:DisplayObject):void{
   this.stage=stage;
  }
  /**
   * stage:DisplayObject的get方法
   * 返回值为stage:DisplayObject
   */
  public function getStage():DisplayObject{
   return stage;
  }
  /**
   * 注册窗口拖动时的事件
   */
  public function init():void{
   img.addEventListener(MouseEvent.MOUSE_DOWN,mouseHandle);
   //child.addEventListener(MouseEvent.MOUSE_UP,mouseHandle);
   stage.addEventListener(MouseEvent.MOUSE_UP,mouseHandle);
   //father.addEventListener(MouseEvent.MOUSE_MOVE,mouseHandle);
   //child.addEventListener(MouseEvent.MOUSE_MOVE,mouseHandle);
   //child.addEventListener(MouseEvent.MOUSE_OUT,mouseHandle);
   //child.addEventListener(MouseEvent.MOUSE_MOVE,titleInit);
  }
  public function titleInit(event:MouseEvent):void{
   var reX:Number=child.x;
   var reY:Number=child.y;
   var rect:Rectangle=new Rectangle(reX,reY,child.width,height);
   if(rect.contains(event.stageX,event.stageY)){
    child.addEventListener(MouseEvent.MOUSE_DOWN,mouseHandle);
    //child.addEventListener(MouseEvent.MOUSE_OUT,mouseHandle);
   }else{
    child.removeEventListener(MouseEvent.MOUSE_DOWN,mouseHandle);
   }
   
   stage.addEventListener(MouseEvent.MOUSE_UP,mouseHandle,true);
  }
  /**
   * 设置startDrag
   */
  private function componentStartDrag(event:Event):void{  
         var pWidth:Number=father.width;
         var pHeight:Number=father.height;
         var tWidth:Number=child.width;
         var tHeight:Number=child.height;
         var xwidth:Number=pWidth-tWidth;
         var xheight:Number=pHeight-tHeight;
         var reX:Number=father.x;
         var reY:Number=father.y;
         var rect:Rectangle=new Rectangle(reX,reY,xwidth,xheight);
           child.startDrag(false,rect);
           if(model != null){
            model.setStyle("backgroundColor","blue");
           }
        }
        /**
         * 设置stopDrag
   */
        private function componentStopDrag(event:Event):void{
            child.stopDrag();
            if(model != null){
            model.setStyle("backgroundColor","");
           }
        }
        /**
         *根据event.type的不同值来调用不同方法
   */
        private function mouseHandle(event:Event):void{
            if(event.type==MouseEvent.MOUSE_DOWN){
             componentStartDrag(event);
         }else if(event.type==MouseEvent.MOUSE_UP){
          componentStopDrag(event);
         }else if(event.type==MouseEvent.MOUSE_OUT){
          componentStopDrag(event);
         }
       }
 } 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值