as3 การใช้ข้อมูลที่ปรับขนาดเพื่อปรับขนาดคลิปภาพยนตร์ของฉัน

ฉันกำลังทำงานกับแอปมือถือทางอากาศใน Flash CS5.5 และค่อนข้างใหม่เกี่ยวกับเรื่องนี้

นี่คือปัญหาของฉัน: ฉันวางเนื้อหาทั้งหมดของฉันไว้ใน 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;}
}
}

person user1892969    schedule 10.12.2012    source แหล่งที่มา


คำตอบ (1)


หลังจากลองใช้โค้ดและลองใช้วิธีแก้ไขปัญหาต่างๆ มากมาย ฉันก็พบโค้ดด้านล่างและดูเหมือนว่าจะทำงานได้ดี ปัญหาคือ 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;}
}
}
person user1892969    schedule 12.12.2012