as3使用调整大小的信息来缩放我的movieclip

时间:2012-12-10 22:18:14

标签: actionscript-3 flash resize scaling

我正在使用Flash CS5.5中的移动应用程序进行操作,并且在这方面相当新。

所以这是我的问题:我将所有内容放在名为base的movieClip中。我编写了代码来根据运行的设备和设备方向调整我的movieClip的大小。这部分工作正常,问题是我试图创建缩放功能。

基本movieClip会缩放,但我无法使最小边界工作,因此我的内容永远不会缩小到小于设备的宽度。我相信它指的是原始基本宽度而不是调整大小的基本宽度。有关如何在调整大小功能后调用新基本宽度的任何想法?请参阅下面的代码,并提前感谢您的任何帮助:)

import flash.geom.Rectangle;

stop();

base.play();

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

var guiSize:Rectangle = new Rectangle(0, 0, 480, 800);
var appScale:Number = 1;


stage.addEventListener(Event.RESIZE, handleResize);
function handleResize(e:Event):void {
     var deviceSize:Rectangle = new Rectangle(0, 0,  stage.stageWidth, 
     stage.stageHeight);
appScale = deviceSize.width / guiSize.width;
base.width = appScale * guiSize.width; 
base.height = appScale * guiSize.height;

Multitouch.inputMode = MultitouchInputMode.GESTURE;
base.addEventListener(TransformGestureEvent.GESTURE_ZOOM , onZoom); 
function onZoom (e:TransformGestureEvent):void{ 

if (base.scaleX * e.scaleX < 1)
{}
else if (base.scaleX * e.scaleX > 5) 
{}
else {
base.scaleX *= (e.scaleX+e.scaleY)/2; 
       base.scaleY *= (e.scaleX+e.scaleY)/2;}
}
}

1 个答案:

答案 0 :(得分:0)

在玩完代码并尝试了许多不同的解决方案后,我想出了下面的代码,它似乎工作正常。问题是我的基本movieClip在调整大小函数之后被放大了,该函数抛出了我的缩放函数的base.scaleX变量。这是因为base.scaleX等于多个。你可以在这里看到问题:

if (base.scaleX * e.scaleX < 1)

该代码导致我的基本movieClip缩小到小于我的设备窗口。我的解决方案是使用新的base.width来确定缩放功能的最小和最大缩放比例。如下所述。

function onZoom (e:TransformGestureEvent):void{ 
       if (base.width * e.scaleX < deviceSize.width )
       {}
else if (base.width * e.scaleX > deviceSize.width * 2 ) 
{}
else {
base.scaleX *= (e.scaleX+e.scaleY)/2; 
       base.scaleY *= (e.scaleX+e.scaleY)/2;}
}
}