İyi günler arkadaşlar.
Bu dersimizde basit bir 3D çizim yapmaya çalışacağız.
İlk önce sahneye bir daire çizelim. F8 ile bunu movie clip yapalım ve instance name ine top_mc diyelim. Layer da 1. frame e tıklayıp F9 tuşuna basalım ve actions panelini açalım ve aşağidaki kodu ekleyelim.
MovieClip.prototype.dondur = function(aci:Number) {
this.i = aci;
this.onEnterFrame = function() {
this.i += (_root._xmouse-(Stage.width/2))/1500;
this._yscale = this._xscale=this._y/((Stage.height/2)+y_oran)*100;
this._x = (Math.sin(this.i)*x_oran)+Stage.width/2;
this._y = (Math.cos(this.i)*y_oran)+Stage.height/2;
updateAfterEvent();
this.swapDepths(this._y);
};
};
top_mc._visible = false;
toplam_top = 15;
x_oran=100;
y_oran=50;
for (i=0; i<=toplam_top; i++) {
aci = (360/toplam_top)/(180/Math.PI)*i;
var yeni_top:MovieClip = top_mc.duplicateMovieClip("top"+i, i);
yeni_top._x = (Math.sin(aci)*x_oran)+Stage.width/2;
yeni_top._y = (Math.cos(aci)*y_oran)+Stage.height/2;
yeni_top.dondur(aci);
}
Evet şimdi bu kodumuza bir bakalim.Bu kodumuzda; movieclip içindeki i değerini fonksiyon parametresi olan acı değerine eşitliyoruz.Ardından onEnterFrame ile döngüye sokup kullanacağımız movieclip içindeki i değerini mouse'un hareketine göre arttırıp azaltıyoruz.
this._yscale = this._xscale=this._y/((Stage.height/2)+y_oran)*100;
Bu satırda movieclip'imizin genişliğini ve yüksekliğini eşitliyoruz.Nede olsa bu movieclip bir top olduğundan öyle olması gerekiyor
Movieclip'in x ve y kordinatlarını sin ve cos fonksiyonlarını kullanarak belirliyoruz
Ardından updateAfterEvent(); kodunu kullanarak sahneyi yeniliyoruz.Bu bize daha akışkan bir görüntü sağlıyor...
Son olarak movieclipin diğerlerinin önünde ya da arkasında olduğunu movieclip'in y kordinatına bağlı olarak değiştiriyoruz.
Tüm bu açıklamalardan sonra kodumuza şu satırları ekliyelim:
top_mc._visible = false;
toplam_top = 15;
x_oran=100;
y_oran=50;
for (i=0; i<=toplam_top; i++) {
aci = (360/toplam_top)/(180/Math.PI)*i;
var yeni_top:MovieClip = top_mc.duplicateMovieClip("top"+i, i);
yeni_top._x = (Math.sin(aci)*x_oran)+Stage.width/2;
yeni_top._y = (Math.cos(aci)*y_oran)+Stage.height/2;
yeni_top.dondur(aci);
}
Burada ilk başta top_mc'imizi görünmez yapıyoruz; çünkü ona komut vermeyeceğiz.
For döngüsü ile toplam_top değeri kadar i sayısını arttırıyoruz.
Ardından açı değerini Flash'in kullandığı radyan biriminden derece birimine çeviriyoruz.Bu bize çalısmanın başlangıcındaki tüm topların 3D olarak sıralanmasını sağlayacak.
Yeni bir top yaratıp bunun x ve y kordinatlarını daha önce bulduğumuz açı değerini sin ve cos fonksiyonlarını içine yazarak buluyoruz.
Bu açı değeri movieclip'e uygulayacağımız dondur fonksiyonunun parametresine yazıyoruz ve bu fonksiyonu çalıştırıyoruz.
yeni bir derste görüsmek uzere... iyi günler arkadaşlar.