Bir kapsayıcıyı (veya bu konuyla ilgili herhangi bir şeyi), esneklik için flash 10'daki matrix3D özelliklerini kullanarak döndürmenin en iyi yolunu bulmaya çalışıyorum.3B flex, bir kap için rastgele bir nokta etrafında döndürün (kısmi çözüm ile!)
Kayıt noktası olmayan bir nokta etrafında döndürmek için bir kapsayıcı almayı başardım ancak bunu yalnızca bir kapsayıcıdaki kırpma kapatarak ve ardından içeriği başka bir yere yerleştirerek (0,0,0) yönetdim). Bu işe yarıyor, ancak birkaç öğe yerleştirmeye çalışırken veya döndürme noktasını hareket ettirmeniz gerektiğinde çok sezgisel ve berbat değil.
Matrix3D sınıfını kullanmak yol gibi görünüyor, ancak tam olarak nasıl emin değilim.
Alkış
Ek bilgi - benim konteyner sahnede (0,0,0) olan ve o zaman ben container.width/'2 tarafından tercüme kabın orta X Koord etrafında döndürmek isterseniz X daha sonra tekrar çevirir ve tekrar çevirir. Bu iyi çalışıyor. AMA kapsayıcı (10, 0, 0) de söylerse, ben aynı yukarıdaki gibi çevirirseniz ve fazladan 10 eklerseniz, o zaman işe yaramıyor. (Komple çöp - eğer mümkünse açıklayınız)
soloution sonra, döndürme, çevirmek -traslate gerek ileri sürüldüğü gibi . Bunu biliyordum ama hiç işe yaramadı.
AMA, aşağıdaki sololaşmayı görüyorum, anlayamıyorum.
private function rotateOnly() : void {
panel.transform.matrix3D.appendRotation(36, Vector3D.Y_AXIS);
}
private var valueToMove : Number = 300;
private var translateUpOrDown : Boolean = false;
private function translateOnly() : void {
if(translateUpOrDown){
panel.transform.matrix3D.appendTranslation(valueToMove, 0, 0);
translateUpOrDown = false;
} else {
panel.transform.matrix3D.appendTranslation(-valueToMove, -0,0);
translateUpOrDown = true;
}
}
//I do not run both chunks of code here at once, this is only to show what I've tried
private function both() : void {
//IF I call this function and call this chunk then the rotation works
translateOnly();
rotateOnly();
translateOnly();
//If I call this chunk which does the exact same as the above it does NOT work!!
panel.transform.matrix3D.appendTranslation(valueToMove, 0,0);
panel.transform.matrix3D.appendRotation(36, Vector3D.Y_AXIS);
panel.transform.matrix3D.appendTranslation(-valueToMove, 0,0);
}
ikinci kod parçanızda çeviriler yanlış yoldan çevrilmiştir - ilk çeviri negatif olmalı, sonra döndürünüz, sonra pozitif çeviri (cevabımın başına olarak) – Alnitak
Baktığınız zaman ne olur uzun bir konuda Başlangıçta, değiştirmeyi beklemediğim için kafa karıştırıcı olan, genişlik, yükseklik, x & y çevirisini kullanıyordum. Bunu yapmak genel görünümü berbat etti. Şerefe. – kenneth