Programların beyin gücü ile çalışma mantıklarını yazmıştım. Şu linkten ilgili makaleyi okuyabilirsiniz.
http://mehmetoglu.org Gelelim programların nasıl yazıldığına.. Tüm programlar hemen hemen aynı mantıkla yazıldı. Birinde bir geldikçe kutu sağa kayıyorsa diğerinde 1 geldikçe ibre sağa dönüyordur.. Pek farkları yok. Ben sadece ”Aksiyön” programının yazımını anlatacağım.
Böyle bir uygulamayı “Flash CS3 ActionScript 3″ ile; yazmayı öğrenebileceğiniz bir biçimde anlatacağım. Temel bilginiz yoksa karmaşık gelebilir.
Herşeyden evvel belirtmem gereken önemli bir nokta var.. Tüm film klipleri (movie klipler) kendi içerinde en ve boy bakımından tam ortadalar… Yani merkez nokta tam orta olacak şekilde konumlandılar.. en ve boy bakımından şekli ortalamak için align panelini kullanabilirsiniz…
// Önce saati oluşturacağız. Bunun için 2 değişken tanımlamalıyız
// “saniye” değişkenini her seferinde gerçek zamanlı saniye cinsinden artıracağız.
// Dakika ise (her 60 saniyede bir), {1} artacak.
var saniye:Number = 0;
// “saniye” değişkeni “Numara” cinsinden “0″ ‘dır dedik.
var dakika:Number = 0;
// Turuncu kutum orta_mc adında durağan bir film klibi (movie clip).
// Onun başlangıç anındaki değerini alıp, değişken olarak bir kenarda tutuyoruz.
var orta_en:Number = orta_mc.x;
// Şimdi saatin çalışması için fonksiyon oluşturalım.
// “Timer” cinsinden “1000 / 1000 milisaniye yani 1 sn sürede bir” çalışan değişken oluşturalım
var zamanlayici:Timer = new Timer(1000);
// zamanlayıcı değişkenine bağlı bir dinleyici oluşturalım.
// her 1000 milisaniyede bir zamanlayici_calisiyor fonksiyonunu çalıştırsın
zamanlayici.addEventListener(TimerEvent.TIMER,zamanlayici_calisiyor);
// Zamanlayici foksiyonunu başlatalım
zamanlayici.start();
// Zamanlayici_calisiyor fonksiyonunu yazalım. Verdiğimiz görevleri uygulasın.
// (Timer Event) olayı olan zamanlayici_calisiyor fonksiyonu şunu yapacak diyelim “{” açalım.
function zamanlayici_calisiyor(TimerEvent) {
// Saniye değişkenine [her 1000 milisaniyede bir] [kendisi + bir ekle]
saniye = saniye + 1;
// Eğer saniye değişkeni 60 ‘a eşit olursa (eşitse)
if (saniye == 60) {
// dakika değişkenine bir ekle (++ ile bir ekleme yapabiliriz)
dakika ++;
// saniye değişkenini 0 yap
saniye = 0;
}
// Bu bütün değişkenleri kronometre_txt (instance name) isimli dynamic text kutusuna yazdıralım
// Aşağıdaki kodda kullandığımız ” karakterlerini flashta yeniden yapın. Buradan alınan kopya uyumsuz oluyor
kronometre_txt.text = (” ” + dakika + ” Dak. ” + saniye + ” San.”);
}
// yeni bir genel dinleyici ekliyoruz. Cinsi “ENTER FRAME” (Frameden frameye atlar. FPS ye göre hızı değişir) Çalıştırdığı fonksiyon ismi “hareket”
addEventListener(Event.ENTER_FRAME, hareket);
// hareket fonksiyonun görevini yazıyoruz. Fonksiyonunun ne olacağını..
// Bu bir fonksiyondur, ismi harekettir, oda bir (olay) ‘dır diyoruz.
// İçine yazacağımız herşey her ENTER FRAME ‘de yani her harekete girişte bir gerçekleşir.
function hareket(Event) {
// sayi adında bir değişken tanımlıyoruz.
// FPS yi ben 24 olarak ayarladığımdan saniyede 24 kez hareket eder. Bu da saniyede 24 kez sayı değişkeni üretir.
// Üretilen sayı değişkeni her seferinde 0 yada 1 olmalı.
// Bizde 2′ den küçük sayılar arasında rastgele üretim yapmasını ve bulduğu sayıyı sayi değişkenine atamasını isteyelim
var sayi:Number = Math.floor(Math.random() * 2);
// Eğer sayi değişkeni 1 ise (üretimden 1 sonucu elde edildiğinde bu böyle olur) [turuncu kutumu(orta_mc)] [turuncu kutumun son değerinden] 1 derece daha sağa kaydır
// Eğer sayi değişkeni 0 ise (üretimden 1 sonucu elde edildiğinde bu böyle olur) [turuncu kutumu(orta_mc)] [turuncu kutumun son değerinden] 1 derece daha sola kaydır
if (sayi == 1) {
orta_mc.x += 1;
}
if (sayi == 0) {
orta_mc.x -= 1;
}
// turuncu kutunun x eksenindeki konumu mavi kutununkinden büyük olursa (mavi kutunun sol sınırı 434 idi)
// Turuncu kutunun x eksenindeki konumunu (orta_mc.x) 435 yap. (her framede yeniden 435 olacağından sürekli burada kalacak.
// Ve zamanlayici fonksiyonunu durdur. Süre donsun.
if (orta_mc.x >= 434) {
orta_mc.x = 435;
zamanlayici.stop();
}
// Eğer orta_mc yeşil kutuya yaklaşırsa; bu olayların yeşil kutunun konumuna göre olan versiyonunu gerçekleştir.
if (orta_mc.x <= 295) {
orta_mc.x = 294;
zamanlayici.stop();
}
}
// Kullanıcı “sıfırla” instance name’li butonuna bastığında herşeyin tek tek başa dönmesini sağlayalım..
// sifirla_btn butonuna duyarlı bir dinleyici ekleyelim. Olay türü “Fare ve .TIKLAMA” olsun. sifirla fonksiyonunu çalıştırsın
sifirla_btn.addEventListener(MouseEvent.CLICK, sifirla);
// sifirla fonksiyonunu yazalım. Duyarlılığını “olay:Fare Olayı” şeklinde belirleyelim.
function sifirla(event:MouseEvent) {
// Herşeyin değerini sıfırlayalım.
saniye = 0;
dakika = 0;
orta_mc.x = orta_en;
// zamanlayici fonksiyonunu yeniden çalıştıralım. Bu anda süre yeniden başlamalı.
zamanlayici.start();
}