Flex 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);
}
}


}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoxin888888/archive/2009/07/08/4332353.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值