Flash ve matematiği kullanarak çark döndürme

Arkadaşlar ikinci dersimle merhaba diyorum. Bu dersimizde amacımız bir daire oluşturup bu dairenin herhangi bir yerinde mouse ile clickledigimiz zaman clicklediğimiz kısmın açısına göre dairemizi çevirmek. Aynı zamanda matematiksel birkaç ifadeden bahsetmek. Gerçi bazıları matematiğe bazıları matematikten bayılır ama olsun flash için vazgeçilmez unsur matematik. Şimdi dersime geçiyorum. Öncelikle sahnemizde 150*150 piksel olacak şekilde bir gradient ihtiva eden bira daire oluşturuyoruz.  Aşağıdaki şekilden ilham alabilirsiniz. Şekil özürlü oluşumdan güzel bir daire ancak bu kadar çizebildim:)

daire1

Bu daireyi movieclibe çevirin. Yalnız movieclibe çevirirken registration noktasını orta nokta yapmaya dikkat edelim. ve dairemizin instance name ismini daire_mc olarak verelim. Şimdi geldik işin eğlenceli kısmına.

//öncelikle flashın kendi tween sınıfını kullanacağımız için gerekli sınıfları import ediyoruz.

import fl.transitions.Tween;
import fl.transitions.easing.*;

//sonra flash biraz saf:) olduğundan bizim kasdettiğimiz açıları bilemediğinden bu açıları radyana çeviren bir fonksiyon tanımlıyoruz. Aslında bu tanımladığımız fonksiyonu tüm radyan dönüşümlerinde kullanabilirsiniz. Bu fonksiyonda çıkan değerin Number degişken olduğuna dikkat edelim.

function aciDondurFNC(dx:Number,dy:Number):Number
{
return Math.atan2(dy,dx)*180/Math.PI;
}

//daire_mc movieclibimize mouse üzerine tıklandığında gıdıklansın diye :) bir click olayı ekliyoruz.

daire_mc.addEventListener(MouseEvent.CLICK,downFNC);

//eklediğimiz fonksiyonu içerisini dolduruyoruz.

function downFNC(evt:MouseEvent):void
{

//öncelikle yeniDeger adında bir degişken tanımlıyoruz. bu degişken mousemuzun bulunduğu nokta ile dairenin koordinatları arasındaki farkı bularak bu farktan çıkan sonuçları aciDondurFNC yardımıyla radyana dönüştürüyor.
var yeniDeger:Number=aciDondurFNC(mouseX-daire_mc.x,mouseY-daire_mc.y);

//uzaklik degişkenimiz bulmuş oldugumuz yeniDeger açısıyla dairemizin açısı arasındaki farkı hesaplıyoruz. Ters yöne dönüş yapmasını engellemek için Math.abs ile mutlak değerini alıyoruz.

var uzaklik:Number=Math.abs(yeniDeger-daire_mc.rotation);
daire_mc.rotation%=360;
// burada da daireinin açısı 360 dan fazla çıkarsa fazlalıkları 360 a bölerek açıyı tekrardan sıfır derecelik açıya getiriyoruz.

// dairenin sağa ve sola dönüş yönünü bir if koşuluyla kontrol ediyoruz. if koşuluna bayılıyorum yaa:)

if(uzaklik>180)  // eger mesafe 180 den büyükse – yönde dön degilse + yönde dön diyoruz.
{
if(yeniDeger>daire_mc.rotation)
{
yeniDeger-=360;
} else
{
yeniDeger+=360;
}
}

//en sonunda tween uyguluyoruz. Bu tweenle dairenin rotasını eski halinden bizim belirlediğimiz yere getiriyoruz.

var myTween:Tween = new Tween(daire_mc, “rotation”, Strong.easeOut, daire_mc.rotation, yeniDeger, 1, true);
}

//bu dersin kaynak dosyasına ulaşmak için tıklayınız.

//kodumuz buraya kadardır. flashın kendi tween sınıfı ile ilgili videolu ders isterseniz sitemdeki şu dersi izleyebilirsiniz.

www.tiklaveogren.com

Bundan sonraki çılgın derslerimizde görüşmek temennisiyle BOL FLASHLI GÜNLER.

VN:F [1.9.3_1094]
Rating: 10.0/10 (2 votes cast)
Flash ve matematiği kullanarak çark döndürme, 10.0 out of 10 based on 2 ratings

Leave a Reply