1

我正在开发 Flash CS5.5 中的空中移动应用程序,对此我很陌生。

所以这是我的问题:我将所有内容都放在了一个名为 base 的电影剪辑中。我已经编写了代码来根据正在运行的设备和设备方向调整我的电影剪辑的大小。那部分工作正常,问题是当我尝试创建缩放功能时。

基本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;}
}
}
4

1 回答 1

0

在玩弄了代码并尝试了许多不同的解决方案之后,我想出了下面的代码,它似乎工作正常。问题是我的基本movieClip 在resize 函数为我的缩放函数抛出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;}
}
}
于 2012-12-12T15:39:53.560 回答