1.使用方法
a.
在页面引用自定义组件的包 xmlns:myzoom="zoomPackage.*"
b.在页面添加自定义组件,并指定要缩放的对象
<s:Button id="test" label="点击"/>
<myzoom:ZoomPackage zoomTarget="{test}"/>
2.组件源码
/FlexAppToJava/flex_src/zoomPackage/ZoomPackage.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
[Bindable]private var sfLevel:Number=0;//缩放增量
[Bindable]private var curLevel:Number=1;//当前缩放级别
[Bindable]public var zoomTarget:Object;//当前缩放对象
//------------页面调用方法--------------
protected function enlarge_clickHandler(event:MouseEvent):void
{
sfLevel=0.1;
doZoom();
}
protected function narrow_clickHandler(event:MouseEvent):void
{
sfLevel=-0.1;
doZoom();
}
protected function recovery_clickHandler(event:MouseEvent):void
{
reSetZoom();
}
//-----------内部调用方法---------
//放大缩小
public function doZoom():void {
if(zoomTarget!=null){
zoom.stop();
zoom.originX =0;//viewIMG.width / 2;
zoom.originY =0;//viewIMG.height / 2;
zoom.zoomWidthFrom = curLevel;
zoom.zoomHeightFrom =curLevel;
curLevel=curLevel+sfLevel;
zoom.zoomWidthTo = curLevel;
zoom.zoomHeightTo =curLevel;
//curLevel=1+sfLevel;
zoom.duration = 1000;
zoom.target = zoomTarget;
zoom.play();
}
}
//恢复
public function reSetZoom():void {
zoom.stop();
zoom.originX = 0;//viewIMG.width / 2;
zoom.originY = 0;//viewIMG.height / 2;
zoom.zoomWidthFrom = curLevel;
zoom.zoomHeightFrom = curLevel;
curLevel=1;
zoom.zoomWidthTo = curLevel;
zoom.zoomHeightTo =curLevel;
zoom.duration = 1000;
zoom.target = zoomTarget;
zoom.play();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
<mx:Zoom id="zoom"/>
</fx:Declarations>
<s:HGroup>
<s:Button id="enlarge" label="放大" click="enlarge_clickHandler(event)"/>
<s:Button id="narrow" label="缩小" click="narrow_clickHandler(event)"/>
<s:Button id="recovery" label="恢复" click="recovery_clickHandler(event)" />
</s:HGroup>
</s:Group>
3.最终效果
