このコード キャンバスでは、id layout_cnv を水平方向の中央揃えと垂直方向の中央揃えに配置しています。画像のズームインはズームですが、上と左からの表示ではなく、内側に行くとは、左と上からのスクロールではないことを意味します
左上隅からではなく、中心位置でズームインしたい。
私を助けてください
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.events.SliderEvent;
private function changeZoom(event:SliderEvent) : void
{
layout_cnv.scaleX = event.target.values[0]*2/100;
layout_cnv.scaleY = event.target.values[0]*2/100;
}
private function calculateCoordinates() : void
{
var x : Number = (canvas.width - layout_cnv.width) / 2;
x = x < 0 ? 0 : x;
var y : Number = (canvas.height - layout_cnv.height) / 2;
y = y < 0 ? 0 : y;
layout_cnv.move(x, y);
callLater(calculateCoordinates);
}
private function adjustDefaultZoom() : void
{
layout_cnv.scaleX = slider.values[0]/100*2;
layout_cnv.scaleY = slider.values[0]/100*2;
callLater(calculateCoordinates);
}
private function myDataTipFunc(val:String):String {
return String(val)+ "%";
}
]]>
</fx:Script>
<mx:Panel title="Zoom Demo" width="100%" height="100%">
<mx:Canvas id="canvas" width="100%" height="100%" horizontalScrollPosition="500">
<mx:Canvas visible="true" id="layout_cnv" creationComplete="adjustDefaultZoom()" borderStyle="solid" height="300" width="500" verticalCenter="0" horizontalCenter="0"
verticalScrollPolicy="off" horizontalScrollPolicy="off" backgroundColor="#FFFFFF">
<mx:Image id="swfContainer" source="thumbImages/1.jpg" x="0" y="0" width="100%" height="100%"/>
</mx:Canvas>
</mx:Canvas>
<mx:ControlBar horizontalAlign="center">
<mx:HSlider id="slider" width="400" minimum="1" maximum="100" labels="['0%','100%']" values="[50]" tickInterval="10" snapInterval="1" liveDragging="true" change="changeZoom(event)"
dataTipFormatFunction="myDataTipFunc" />
</mx:ControlBar>
</mx:Panel>
ありがとう、ニティン