如题,在flex里怎样把画布上的东西放大或者缩小 ? 

解决方案 »

  1.   

    http://hi.baidu.com/mrpie/blog/item/ebbfe3cf32de9334f8dc61c0.html
      

  2.   

    http://www.javaeye.com/topic/247935
      

  3.   

    http://download.csdn.net/source/1672087
      

  4.   

    上面你嫌太简单了,那去 flex官方网站上下他的 sample,挑复杂的下。呵呵
      

  5.   

    早上自己实现了在canvas放大缩小所有组件,但发现放大、缩小组件(放大、缩小是以target.width/2,target.height/2为中心)的时候,他们的坐标已经改变了。能不能
    不让他们的坐标改变,也就是相对于canvas的坐标不变?还有能不能实现canvas的背景
    网格可以放大、缩小啊,谢谢!
      

  6.   

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="top"
        horizontalAlign="center" backgroundGradientColors="[0x000000,0x323232]" paddingTop="0" viewSourceURL="srcview/index.html">
        
        <mx:Script>
            <![CDATA[
                private function smoothImage(ev:Event):void{
                    //set image smoothing so image looks better when transformed.
                    var bmp:Bitmap = ev.target.content as Bitmap;
                    bmp.smoothing = true;
                }
            ]]>
        </mx:Script>
        <mx:Resize id="expand" target="{img}" widthTo="120" heightTo="120"/>
        <mx:Resize id="contract" target="{img}" widthTo="24" heightTo="24"/>
            
        <mx:Panel title="Resize Effect" layout="vertical" color="0xffffff" borderAlpha="0.15" width="500" height="230"
             paddingTop="5" paddingRight="10" paddingBottom="5" paddingLeft="10" horizontalAlign="center">
             
             <mx:Text width="100%" color="0x323232" textAlign="center" paddingBottom="5"
                text="Use the Button controls to resize the image."/>        <mx:Image id="img" width="24" height="24" source="@Embed('images/boots.jpg')" creationComplete="smoothImage(event);"/>
            
            <mx:ControlBar horizontalAlign="center" paddingTop="3" paddingBottom="3">
                <mx:Button label="Expand" click="expand.end(); expand.play();"/>
                <mx:Button label="Contract" click="contract.end(); contract.play();"/>
            </mx:ControlBar>
            
        </mx:Panel>
        
    </mx:Application>
      

  7.   

    谢谢warison2008提供的代码,刚试了下,发现坐标还是会变的!
      

  8.   

    http://www.cristalab.com/files/ejemplos/zoom/zoom.html
      

  9.   

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
    <![CDATA[

    private var zwidth:int = 1;
    private var zheight:int = 1;

    public function doExpandZoom(event:MouseEvent){
    if(zwidth < 1){
    zwidth = zwidth * 2;
    zheight = zheight * 2;
    }else{
    zwidth++;
    zheight++;
    }
    zoomExpand.originX = 0;
    zoomExpand.originY = 0;
    zoomExpand.zoomWidthFrom = panel.width;
    zoomExpand.zoomHeightFrom = panel.height;
    zoomExpand.zoomWidthTo = zwidth ;
    zoomExpand.zoomHeightTo = zheight ;
    zoomExpand.play();
    }
    public function doContractZoom(event:MouseEvent){
    if(zwidth == 1){
    zwidth = zwidth * 0.5;
    zheight = zheight * 0.5;
    }else{
    zwidth--;
    zheight--;
    }
    zoomExpand.originX = 0;
    zoomExpand.originY = 0;
    zoomExpand.zoomWidthFrom = panel.width;
    zoomExpand.zoomHeightFrom = panel.height;
    zoomExpand.zoomWidthTo = zwidth ;
    zoomExpand.zoomHeightTo = zheight ;
    zoomExpand.play();
    }
    ]]>
    </mx:Script>
    <mx:Zoom id="zoomExpand" target="{panel}" />

    <mx:Panel id="panel" x="0" y="0" width="250" height="200" >
    <mx:Button label="Expand" click="doExpandZoom(event)"/>
    <mx:Button label="Contract" click="doContractZoom(event)"/>
    </mx:Panel>

    </mx:Application>
      

  10.   

    private var _zoom:Zoom;
    private var _zWidth:Number = 1;
    private var _zHeight:Number =1;
    [Bindable]
    private var _flag:Number = 1;


    /**
     * 初始化创建zoom实例对象
     */
     private function init():void
     {
      _zoom = new Zoom();
     }
    /**
     *显示隐藏网格 
     */
    private function showGrid():void
    {
    if (this.showGridCheckBox.selected)
    this.parentDocument.canFlowChart.onInitialize();
    else
    this.parentApplication.canFlowChart.clearbg();
    }
    /**
     * 放大、缩小画布上的组件
     * 
     */
    private function zoomOut():void
    {
    _flag += .25;

    zoom();
    }
    private function zoomIn():void
    {
    _flag -= .25;
    zoom();
    }

    private function zoom():void
    {
    _zoom.stop();
    // _zoom.originX =0;
    // _zoom.originY = 0;
    _zoom.zoomWidthFrom = _zWidth; 
    _zoom.zoomHeightFrom = _zHeight;
    _zoom.zoomWidthTo = _flag;
    _zoom.zoomHeightTo = _flag;
    //显示延迟时间
    _zoom.duration = 100;
    _zoom.targets = this.parentApplication.canFlowChart.getChildren();
    _zoom.play();

    _zWidth = _flag;

    _zHeight = _flag;
    }
    我的代码