ActionScript 3 ile Hesap Makinası | ActionScript 3 Calculator

Posted on Pazartesi, Mart 17th, 2008 at 14:15

Google ‘da uzun uzun aramama rağmen bulamadım. Şimdilerde Engin Yöyen (.com) hocamında yardımlarıyla öğrendiklerim sayesinde yazdığım hesap makinasıdır.

(” Tırnak) İşaretlerini tazeleyiniz 

// Ayrıntılara değinmeyeceğimizden hesap makinamızda birçok eksikliğin olması normaldir.
// Programın var olan mantığını değerlendirerek yazılımı geliştirebilirsiniz.

// Öncelikle sürekli değiştirebileceğimiz bir değer oluşturmalıyız
// Elbette değeri şuanda 0 olarak belirlemeliyiz
// Numara türünde  deger isminde bir değişken oluşturuyoruz
// Daha sonra bu değerdeki değişmeleri ekranda göstereceğiz
var deger:Number = 0;

// İşlem türü ( + - / * ) için bir değişken oluşturalım. Eşittir butonuna basıldığında
// Hangi işlem türü seçildiyse o işlemi yaptıracağız..
// String türünde islemTuru adında bir değişken oluşturuyor ve islemSecilmedi değerini atıyoruz
var islemTuru:String = (”islemSecilmedi”);

// Bütün butonlar için birer dinleyici ekleyelim.
// bir_btn.dinleyiciEkle(Fare olayı olarak çalışsın.TIKLANINCA, bir_ekle fonksiyonunu çağırsın

bir_btn.addEventListener(MouseEvent.CLICK, bir_ekle);

// Diğer tüm butonlar için dinleyiciler ve çalıştırmaları gereken fonksiyonları ekliyoruz.
iki_btn.addEventListener(MouseEvent.CLICK, iki_ekle);
uc_btn.addEventListener(MouseEvent.CLICK, uc_ekle);
dort_btn.addEventListener(MouseEvent.CLICK, dort_ekle);
bes_btn.addEventListener(MouseEvent.CLICK, bes_ekle);
alti_btn.addEventListener(MouseEvent.CLICK, alti_ekle);
yedi_btn.addEventListener(MouseEvent.CLICK, yedi_ekle);
sekiz_btn.addEventListener(MouseEvent.CLICK, sekiz_ekle);
dokuz_btn.addEventListener(MouseEvent.CLICK, dokuz_ekle);
sifir_btn.addEventListener(MouseEvent.CLICK, sifir_ekle);

// Şimdi çağırılıp çalıştırılması gereken fonksiyonların görevlerini yazalım
// fonksiyon bir_ekle adlı fonksiyon(olay:FareOlayı idi):değer döndürme

function bir_ekle(event:MouseEvent):void {
 // butona tıklandığı anda bu fonksiyon çağırılır. Biz ise bu fonksiyonda
 // tam şu esnada ekrana, yani durum adı (crtl+f3, instance name) deger_txt olan dinamik yazıya
 // kendi içindekiler ve artı 1 yaz diyelim

 deger_txt.text = (deger_txt.text + “1″);
}

// Diğerleride kendi sayılarını yazdırmak koşuluyla aynen takip eder..
function iki_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “2″);
}

function uc_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “3″);
}

function dort_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “4″);
}

function bes_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “5″);
}

function alti_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “6″);
}

function yedi_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “7″);
}

function sekiz_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “8″);
}

function dokuz_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “9″);
}

function sifir_ekle(event:MouseEvent):void {
 deger_txt.text = (deger_txt.text + “0″);
}

// Artık artı,eksi,bölü,çarpı butonlarını dinletebilir ve görevlerini tanımlayabiliriz
arti_btn.addEventListener(MouseEvent.CLICK, arti);
eksi_btn.addEventListener(MouseEvent.CLICK, eksi);
bolu_btn.addEventListener(MouseEvent.CLICK, bolu);
carpi_btn.addEventListener(MouseEvent.CLICK, carpi);

function arti(event:MouseEvent):void {
 // islemTuru adındaki string değişkenin değerini islemArti olarak değiştireceğiz.
 // Böylece makina, eşittir butonuna basıldığında hangi işlemi yapması gerektiğini algılayacak.

 islemTuru = (”islemArti”);
 
 // Değer adlı değişkenin yeni değerini belirleyeceğiz. Yeni değer
 // ekrandaki yani deger_txt durum adlı (crtl+f3, instance name) olarak değişecek.
 // fakat yazı kutusundan gelen bu değerin Number( olarak çağırılmasını sağlayacağız.
 deger = Number(deger_txt.text);
 // Değeri aldık. Sonrasında ekranı temizliyoruz.
 // Ayrıca bu değerleri karıştırmamak için gerekli olacak.
 // Hesap makinasının kısa mantığını daha rahat anlamak için işi komplex
 // hale getirmeyeceğiz. Bu faslı hemen geçelim..

 
 deger_txt.text = (”");
}

// Diğer işlem fonksiyonlarınıda aynı biçimde dolduralım..
function eksi(event:MouseEvent):void {
 islemTuru = (”islemEksi”);
 deger = (Number(deger_txt.text));
 deger_txt.text = (”");
}

function bolu(event:MouseEvent):void {
 islemTuru = (”islemBolu”);
 deger = Number(deger_txt.text);
 deger_txt.text = (”");
}

function carpi(event:MouseEvent):void {
 islemTuru = (”islemCarpi”);
 deger = Number(deger_txt.text);
 deger_txt.text = (”");
}

// Eşittir butonunu burada tanımlıyoruz. Ayrıca eşittir
// fonksiyonunu hemen sonrasında tanımlayacağız

esittir_btn.addEventListener(MouseEvent.CLICK, esittir);

function esittir(event:MouseEvent):void {
 
 // Eğer islemTuru islemArti ise yapılacak işler şunlar
 if (islemTuru == “islemArti”) {
  // deger = deger + deger_txt durum adlı yazı kutusunun
  // numara halinde alınarak getirilen verisi

  deger = deger + Number(deger_txt.text);
  
  // Sıradaki işlem bu yazı kutusuna deger ‘in yazdırılması
  deger_txt.text = (”" + deger);
  
  // Yine işlemlerin karışmaması için deger ‘i sıfırlıyoruz
  // Zaten ekrandaki son sayı yeni işlemlerde yeniden
  // hesaba katılacağından bunun önemi yok

  deger = 0;
  
  // Eğer öyle değilde şöyleyse islemTuru = islemEksi
 } else if ( islemTuru == “islemEksi”) {
  // Diyor ve işlemleri çıkarma için uyarlıyoruz
  deger = deger - Number(deger_txt.text);
  deger_txt.text = (”" + deger);
  deger = 0;
 } else if ( islemTuru == “islemBolu”) {
  deger = deger / Number(deger_txt.text);
  deger_txt.text = (”" + deger);
  deger = 0;
 } else if ( islemTuru == “islemCarpi”) {
  deger = deger * Number(deger_txt.text);
  deger_txt.text = (”" + deger);
  deger = 0;
 }
}

// Hepsi bu kadar. Artık yapmamız gereken tek şey bir sıfırlayıcı.
// c_btn durum adlı butona dinleyici ekliyor ve sifirla adlı fonksiyonu çağır diyoruz..

c_btn.addEventListener(MouseEvent.CLICK, sifirla);

// sifirla adlı fonksiyonu tanımlıyoruz
function sifirla(event:MouseEvent):void {
 // Bütün verileri ve ekranı sıfırlıyoruz..
 deger = 0;
 deger_txt.text = “”;
 islemTuru = “Islem secilmedi”;
}

/* www.mehmetoglu.org | FlashCS3 & As3 Blog..

Çalışan flash animasyonu: http://www.mehmetoglu.org/as3_dersler/hesap_makinasi.swf
Çalışan proje dosyası: http://www.mehmetoglu.org/as3_dersler/hesap_makinasi.fla

*/

İstersen yorum yazabilirsin, ya da kendi sitenden "geridönüş" (trackback) ekleyebilirsin.

8 Yorum yazılmış

Merhaba Mehmet
Öncelikle eline sağlık, çok güzel duruyor, bu arada bloğun için bir türlü hayırlı olsun diyemedim, ne zamandır gelip gidiyorum.
Eğer senin için bir mahsuru yoksa bir tavsiyede bulunabilirim.
Eklenen sayılar için tek bir değişken yerine dizi değişkeni kullanırsan(Array), yapılan matematik işlemlerinde birden çok sayıyı tutabilir, sıfırlama içinde dizi değişkeni sınıfının pop metodunu kullanabilirsin.

Mart 17th, 2008 at 22:46
 2 

Teşekkürler herşey için sağol.. :)

Dizi (Array) metodunu ne şekilde burada kullanacğımı kestiremedim tam olarak. Ne var ki şu anda xml ile çalışınca mecburen ve diziler döngüler vs üzerinde yoğun olarak çalışıyorum :) İnş ilerleyen zamanlarda basit savaş oyunları gibi örnekler hazırlamak istiyorum her kodlamacı gibi..

Biz de senin yardımlarının devamını mutlaka bekliyoruz hocam :) Sevgilerimle..

Mart 18th, 2008 at 10:24
 3 
hasso:

selam hesap makinası yanlış çalışıyor. örneğin 2×5-2 şeklinde sonucu yanlış veriyor.yani her işlemden sonra eşittire basmak gerekiyor.oysa hesap makinaları en fazla yukarıdaki mantıklada kullanılabiliyor.bunu düzeltmen lazım

Ağustos 7th, 2008 at 22:33
 4 

Sselamlari Hasan..

Bu ve bunun gibi birkaç hata olduğunu biliyorum. Öncelikli olarak bu uyarıyı yaptım ve bu mantığı kendinizin geliştirmesi gerektiğini belirttim.

eğer her fonksiyonu düzenleseydim yeni başlayanlara bu uygulamayı anlatmam zorlaşırdı..

Sevgilerle :)

Ağustos 8th, 2008 at 08:00
 5 
ikilem:

Hesap makinesine bir de (.) nokta eklenirse işe yarar kanısındayım, ben de değişik bir mantıkla yapmıştım, eline sağlık…

Ekim 21st, 2008 at 19:30
 6 

Teşekkürler :) Ben de kendim için mantığı keşfetmek adına yapmıştım. (.) eklemeden önce yapılması gereken birçok geliştirme var aslında. Farkedilebilen ve edilemeyen hatalar bile var

Ekim 21st, 2008 at 22:41
 7 

hocam bişi soracam bu hesap makinesi ile ilgi; bende nerdeyse olmayan as3 bilgimle bi hesap makinesi yapmaya çalıştım.Tabiki çalışmadı :)
bendeki mantık şuydu.
a_txt , b_txt , c_txt
a_txt = b_txt , c_txt
bunu bir fonksiyona yazıp butona atamaktı olmadı dediğim gibi visual basicte böle bi mantık vardı sanırım… neden çalışmamıştır meark ediyorum özet geçerseninz sevinirim tşklr..

Haziran 19th, 2010 at 15:46
 8 
selam:

Öncelikle Burak mı Mehmet mi ismini çözemedim :)

Konuyla alakalı değil ama Soketler konusunda meraklısın sanırım enginin sitesindeki soket istekleri sana aitti sanırım. Kendi sitende bununla ilgili bir bölüm var mı ? ben mi göremiyorum.
İlgili bir başlık bulamadığımdan buraya yazmak zorunda kaldım,

Haziran 21st, 2010 at 08:57

Yazmayan ölsün..

Adın
e-Postan (Yayımlarsam ne olim)
Siten
Gençliğini neyle değerlendirdin?
Yorumun: