2010-11-19 8 views
0

Sahnede yeniden boyutlandırma için sahnemde (1400 px genişliğinde) büyük bir film merkezi oluşturmak istiyorum. Belirli olaylar üzerine sağa Bu büyük film klibi hamle yüzden böyle bir kod kullanamazsınız: Actionscript 3 Sahne Alanı üzerinde hareketli bir nesneyi ortalayarak yeniden boyutlandırma

currentPage.x = ((stage.stageWidth/2) - (currentPage.width/2)) 

belki kullanmak için bir yolu var mı onun 0 (evre 'görüntü alanı' sol tarafında) gelen ofset ve bu merkezlemeyi merkezlemede mi kullanıyorsunuz?

Movieclip yalnızca x olarak değişir.

cevap

0

Bir nesne yeniden boyutlandırıldığında, ölçeğinin değiştiğini söyleyebiliriz. Ölçekler güzel çünkü yüzdelerle çalışmamıza izin veriyorlar. Herhangi bir yüzde değişikliği dikkate alındığında, göreceli bir konum elde etmek için aynı değişikliği başka herhangi bir nesneye uygulayabiliriz. Bakın:

var previousStageWidth:Number; 

public function handleResize():void { 
    //calculate the difference in stage with as a percentage 
    var widthScale:Number = previousStageWidth/stage.stageWidth; 

    //scale the x value by the same amount 
    myDisplayObject.x *= widthScale; 

    //update the previous value for the next resize 
    previousStageWidth = stage.stageWidth; 
} 

Umarım bu sizin için çalışır.

+0

bu şekilde her bir yeniden boyutlandırmada birikirsiniz ... – alxx

+0

Ne tür hatalar buluyorsunuz? Soru soruyu açıklayınız. –

+0

no, hareketli nesne için uygun değil. Unut gitsin :) – alxx

0

Tüm içerikler için konteynır taşıyıcı yapmayı tercih ediyorum. Konteynerin içinde, sahne her zaman 400x300 (veya başka bir sabit boyut, ihtiyacınız olan en boy oranı) olsaydı her şey ölçülür. sahne yeniden boyutlandırılır, ben yeniden boyutlandırma ve içine sığacak şekilde sadece konteynerlerin hizalanmasına ediyorum:

//not really tested because my real code is more complex, so watch out... 
var bounds:Rectangle = container.getRect(null); 
//scale factor to fit inside 
var scaleFactor:Number = Math.min(stage.stageWidth/bounds.width, stage.stageHeight/bound.height); 
container.scaleX = container.scaleY = scaleFactor; //scaling 
//centering 
container.x = (stage.stageWidth - container.width) * 0.5; 
container.y = (stage.stageHeight - container.height) * 0.5; 

Bu şekilde, kap içinde sadece bir tane klip herhangi bir sayıda işleyebilir. Kapsayıcı tüm ekran alanını kullanmaz, en boy oranını korur. Tüm ekran alanını kullanmak istiyorsanız, sahne alanınızın dinamik düzenini düşünmeniz gerekir - sadece doğru şekilde yapabileceğiniz bir şey.

İlgili konular