as3 Menggunakan informasi yang diubah ukurannya untuk menskalakan klip film saya

Saya sedang mengerjakan aplikasi seluler udara di Flash CS5.5 dan saya cukup baru dalam hal ini.

Jadi inilah masalah saya: Saya menempatkan semua konten saya di dalam movieClip yang disebut base. Saya telah menulis kode untuk mengubah ukuran movieClip saya berdasarkan perangkat yang menjalankannya dan orientasi perangkat. Bagian itu berfungsi dengan baik, masalahnya adalah ketika saya mencoba membuat fungsi zoom.

MovieClip dasar berskala tetapi saya mengalami kesulitan dalam menerapkan batas minimum sehingga konten saya tidak pernah berskala kurang dari lebar perangkat. Saya yakin ini mengacu pada lebar dasar asli, bukan lebar dasar yang diubah ukurannya. Adakah ide tentang cara memanggil lebar dasar baru setelah fungsi pengubahan ukuran? Lihat kode saya di bawah ini dan terima kasih sebelumnya atas bantuan apa pun :)

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 sumber


Jawaban (1)


Setelah bermain-main dengan kode dan mencoba banyak solusi berbeda, saya menemukan kode di bawah ini dan sepertinya berfungsi dengan baik. Masalahnya adalah movieClip dasar saya ditingkatkan setelah fungsi pengubahan ukuran yang menghilangkan variabel base.scaleX untuk fungsi zoom saya. Ini karena base.scaleX sama dengan lebih dari satu. Anda dapat melihat masalahnya di sini:

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

Kode ini menyebabkan movieClip dasar saya diperkecil lebih kecil dari jendela perangkat saya. Solusi saya adalah menggunakan base.width baru untuk menentukan skala minimum dan maksimum untuk fungsi zoom saya. Seperti disebutkan di bawah ini.

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