拓展canvas组件

拓展canvas组件,使其里面的组件能够放大,缩小,滚轮放大缩小,鼠标点击移动。

package cn.ipanel.zzt.toolBarContainer
{
 import flash.display.DisplayObject;
 import flash.events.MouseEvent;
 
 import mx.containers.Canvas;
 import mx.containers.HBox;
 import mx.controls.Button;
 import mx.core.UIComponent;
 import mx.effects.Zoom;

 public class ToolBarContainer extends Canvas
 {
  
  private var isDrag:Boolean;
  private var quote:Number=1;
  private var fitQuote:Number=1;
  private var zoomAll:Zoom;
  private var zoomChanged:Boolean;
  
  private var obj:UIComponent;
  
  public function ToolBarContainer()
  {
   //TODO: implement function
   super();
   
   addToolBtn();
   
   this.addEventListener(MouseEvent.MOUSE_DOWN,mouseDownHandler);
   this.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler);
   this.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
   this.addEventListener(MouseEvent.MOUSE_WHEEL,mouseWheelHandler);
  }
  
  override public function addChild(child:DisplayObject):DisplayObject{
   var displayObject:DisplayObject=super.addChild(child);
   
   if(this.numChildren>1){
    obj=this.getChildAt(1) as UIComponent;
    
    this.setChildIndex(obj,0);
    zoomAll=new Zoom();
    zoomAll.startDelay=50;
    zoomAll.duration=200;
    zoomAll.target=obj;
    
   }
   return displayObject;
  }
  
  //初始化添加工具栏
  private function addToolBtn():void{
   
   var hBox:HBox=new HBox();
   hBox.x = 10;
   hBox.y = 10;
   hBox.setStyle("fontSize",12);
   var zoomInBtn:Button=new Button();
   zoomInBtn.width=60;
   zoomInBtn.height=20;
   zoomInBtn.label="放大";
   zoomInBtn.addEventListener(MouseEvent.CLICK,zoomIn);
   hBox.addChild(zoomInBtn);
   
   var zoomOutBtn:Button=new Button();
   zoomOutBtn.width=60;
   zoomOutBtn.height=20;
   zoomOutBtn.label="缩小";
   zoomOutBtn.addEventListener(MouseEvent.CLICK,zoomOut);
   hBox.addChild(zoomOutBtn);
   
   var zoomFitBtn:Button=new Button();
   zoomFitBtn.width=60;
   zoomFitBtn.height=20;
   zoomFitBtn.label="适合";
   zoomFitBtn.addEventListener(MouseEvent.CLICK,fitToContent);
   hBox.addChild(zoomFitBtn);
   
   this.addChild(hBox);
  }
  
  //放大
  private function zoomIn(e:MouseEvent):void{
   this.zoomInObj();
  }
  
  private function zoomInObj():void{
   if(quote<2){//控制放大率
    if(zoomAll.isPlaying){
    }else{
     zoomChanged=true;
     
     zoomAll.zoomHeightFrom=quote;
     zoomAll.zoomHeightTo=quote+0.22;
     zoomAll.zoomWidthFrom=quote;
     zoomAll.zoomWidthTo=quote+0.22;
     
     quote=quote+0.22;
     zoomAll.play();
    }
   }
  }
  
  //缩小
  private function zoomOut(e:MouseEvent):void{
   this.zoomOutObj();
  }
  
  private function zoomOutObj():void{
   
   if(quote>0.09){//控制缩小率
    if(zoomAll.isPlaying){
    }else{
     zoomChanged=true;
     
     zoomAll.zoomHeightFrom=quote;
     zoomAll.zoomHeightTo=quote-0.22;
     zoomAll.zoomWidthFrom=quote;
     zoomAll.zoomWidthTo=quote-0.22;
     
     quote=quote-0.22;
     zoomAll.play();
    }
   }
  }
  
  //适合
  private function fitToContent(e:MouseEvent):void{
   if(zoomAll.isPlaying){}else{
    zoomAll.zoomHeightFrom=quote;
    zoomAll.zoomHeightTo=fitQuote;
    zoomAll.zoomWidthFrom=quote;
    zoomAll.zoomWidthTo=fitQuote;
    
    quote=fitQuote;
    zoomAll.play();
   }
  }
  
  
  
  private function mouseDownHandler(event:MouseEvent):void{
   if(event.target is Button){
    isDrag=false;
   }else{
    isDrag=true;
   }
  }
  
  private function mouseMoveHandler(event:MouseEvent):void{
   if(isDrag){
    //鼠标放在容器内;
    this.setChildIndex(obj,0);
    obj.startDrag();
   }
  }
  
  private function mouseUpHandler(event:MouseEvent):void{
   isDrag=false;
   obj.stopDrag();
  }
  //鼠标滚轮操作;
  private function mouseWheelHandler(event:MouseEvent):void{
   if(event.delta>0){
    this.zoomIn(event);
   }else{
    this.zoomOut(event);
   }
  }
  
  
 }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值