我正在使用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;}
}
}
答案 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;}
}
}