簡體   English   中英

as3使用調整大小的信息縮放我的動畫片段

[英]as3 Using resized information to scale my movieclip

我正在Flash CS5.5中開發一個空中移動應用程序,在這方面還很新。

所以這是我的問題:我將所有內容都放在了名為base的movieClip中。 我已經編寫了代碼來根據其運行的設備和設備方向來調整我的movieClip的大小。 那部分工作正常,問題是當我嘗試創建縮放功能時。

基本的movieClip可以縮放,但是我無法使最小邊界生效,因此我的內容縮放的范圍永遠不會小於設備的寬度。 我相信它指的是原始基准寬度,而不是調整后的基准寬度。 關於在resize函數之后如何調用新的基寬的任何想法? 請參閱下面的我的代碼,在此先感謝您的幫助:)

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;}
}
}

在研究了這些代碼並嘗試了許多不同的解決方案之后,我想到了下面的代碼,它似乎可以正常工作。 問題是我的基本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;}
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM