?> Fonksiyonlu Hesap Makinası Yapalım - photoders
Site » Flash Dersleri

Fonksiyonlu Hesap Makinası Yapalım

[ 25 May 2009 | Yorum Yok ]

photodersFlash çalışmamızda Flash 8 ile çok fonksiyonlu hesap makinası yapalım. Hesap makinasını yapabilmek için ActionScript bilmek gerekmekte fakat az çok da bilseniz yeterlidir. Çalışmamıza başlayalım yeni bir çalışma sayfası açalım istediğimiz rengi kullanarak resimdekine benzer arka plan oluşturalım.

 


photoders.com
1-Çalışmamıza buton hazırlayarak başlayalım örnek resimde görüldüğü gibi Up ve over kısımlardaki görünümü ekledim. İlk 16 butonu hazırlıyoruz. Name olarak sıralamayı takip edebiliriz örnek olarak btn_0 şeklinde olabilir.
photoders
2-Hazırladığımız 16 butonu scene1 sahnemize ayarlayalım.
photoders
3-1 ile sıfır arası butonları tek, tek seçili yapıp actions paneli açalım ekli kodu ekleyelim.

on (release) {
if (off_flag == false) {
dispflag(dispno);
if (dispno == true) {
AddDigit("1");
}
}
}

Her butona bu kodu ekleyelim fakat (“sayı değişelim ”)sayıyı değişerek ekleyeceğiz. Örnek vereyim eksi butonumuza eklediğimiz kod.

on (release) {
if(off_flag==false) {
display_flag = 0;
DoOperator("-");
}
}

4-Fonksiyon butonlarını yapalım benim örneğim resimde görüldüğü şekilde oldu. Dört adet yapalım
photoders
5-Dört adet hazırladığımız butonları yerleştirelim.
photoders
6-M+, MR, MC, C butonları tek ,tek seçili yaparak actions panele sırası ile ekli kodları ekleyelim.
M+ eklenecek kod

on (release) {
if (off_flag == false) {
memory = memory+Number(display);
clear = true;
}
}

MR eklenecek kod

on (release) {
if(off_flag==false) {
display = memory;
clear = true;

MC eklenecek kod

on (release) {
if(off_flag==false) {
memory = 0;
clear = true;

C eklenecek kod

on (release) {
if(off_flag==false) {
display = "0";
decimal = false;
}
}

7-İki çeşit buton hazırladık 2 adet buton daha yapalım biri OFF diğeri AC buton olacak örnek resimde.
photoders
OFF ve AC butonları seçili yapalım ekli kodları ekleyelim.
OFF eklenecek kod

on (release) {
offCheck1();
operand1 = false;
display = "";
operator = "";
clear = false;
decimal = false;
Status= "";
setflag = false;
setProperty (check_inv, _visible, 0);
flag_inv = 0;

AC eklenecek kod

on (release) {
offCheck();
operand1 = false;
display = "0";
operator = "";
clear = false;
decimal = false;
Status= "";
setflag = false;
display_flag = 0;
setProperty (check_inv, _visible, 0);
flag_inv = 0;

8-Genel olarak butonları nasıl oluşturduğumuzu ve eklenecek kodları verdim şimdi fonksiyon butonları hazırlayalım butonların görünümü ve sahnedeki görünümü örnek resimde.
photoders
9-Eklenecek kodları tek,tek eklemek yerine ekli dosyayı indirip inceleyebilirsiniz.
10-Butonları tamamen hazırladığımızdaki görünüm resmimiz.
photoders
11-Üst kısımdaki siyah olan yere Text tool aracını seçelim Dynamic Text oluşturalım.
photoders
12-Scene1 sahnemizde 1.framede actions paneli açalım ekli kodu ekleyelim.

//photoders.com
memory = 0;
sp = "0";
display = 0;
flag_inv = 0;
display_flag = 0;
point = false;

off_flag = false;
if (off_flag == true) {
offcheck1();
}
stop ();

function offCheck1 () {
off_flag = true;
display = "";
}

function offCheck () {
off_flag = false;
}

function dispflag () {
if (display_flag<15) {
display_flag = display_flag+1;
return dispno=true;
} else {
return dispno=false;
}
}
function AddDigit (digit) {

if (clear) {
clear = false;
decimal = false;
display = "0";
}
if (dispno=true) {
if (display == "0" and digit != ".") {
display = digit;
} else {
display = display+digit;
}
} else {
}
}
function DoInverse (flag) {
if (flag == 0) {
return setflag=true;
} else {
return setflag=false;
}
}
function DoOperator (newOper) {

if (operator == "+") {
display = Number(operand1)+Number(display);
}

if (operator == "-") {
display = operand1-display;
}

if (operator == "*") {
display = operand1*display;
}

if (operator == "/") {
display = operand1/display;
}

if (operator == "x_rest_y") {
display = Math.pow(Number(operand1), Number(display));
}

if (operator == "exp1") {
display = Number(operand1)*Math.pow(Number(10), Number(display));
}

operator = "=";
clear = true;
decimal = false;
if (newOper != null) {
operator = newOper;
operand1 = display;
}
}

function refresh () {
operator = "=";
clear = true;
decimal = false;
Status ="";
if (newOper != null) {
operator = newOper;
operand1 = display;
}
}

function one_by_x1 () {
display = Number(1/display);
refresh();
}

function x_square () {
display = Number(display*display);
refresh();
}

function disp_pi () {
display = Number(Math.PI);
}

function plus_minus () {
if (display != 0) {
display = Number(-1*display);
} else {
display = Number(display);
}
}

function DoSin () {
display = (Math.sin((display*Math.PI/180)));
refresh();
}

function DoaSin () {
display = Math.asin(display)*(180/Math.PI);
setflag = false;
setProperty (check_inv, _visible, 0);
flag_inv = 0;
refresh();
}

function DoCos () {
if (display == 90) {
display = 0;
} else {
display = (Math.cos((display*Math.PI/180)));
Status = "";
}
refresh();
}

function DoaCos () {
display = Math.acos(display)*(180/Math.PI);
setflag = false;
setProperty (check_inv, _visible, 0);
flag_inv = 0;
refresh();
}

function Dotan () {
if (display == 90) {
display = "Infinity";
} else {
display = Math.tan((display*Math.PI/180));
}
refresh();
}

function Doatan () {
display = Math.atan(display)*(180/Math.PI);
setflag = false;
setProperty (check_inv, _visible, 0);
flag_inv = 0;
}
function DoLogNatural () {
display = Math.log(display);
refresh();
}

function DoN_factorial () {

disp_fact = int(display);

test = display-disp_fact;
if (test>0) {
display = "infinity";
break;

} else if (disp_fact>100) {
display = "Infinity";
break;
} else if (disp_fact == 0) {
display = 1;
Status = "";
} else {
for (i=1; i display = display*i;
}
}
refresh();
}

Çalışmamızı tamamladık sadece fonksiyon buton kodlarını eklemedim ekli dosyadan alabilirsiniz.
Çalışmamızı test edelim CTRL+ENTER
FLA İndir

Yorum Yazın

Konuyla ilgili yorumlarınızı aşağıya yazabilir diğer okuyucularla paylaşabilirsiniz, yazıdan alıntı yapacak olursanız geribildirim yapmayı unutmayın.. Yazıdaki yorumları RSS olarak takip etmek için tıklayınız .

Yorum yazarken dikkat etmeniz gereken hususlar;

  • Spam ve reklam içerikli yorumlar silinecektir.
  • Yorumlar onay gerektirdiğinden birden fazla kez aynı yorumu yazmayınız.
  • Yorumlarınızın konu ile alakalı olmasına özen gösteriniz.
  • Küfür, hakaret etmenizin kimseye faydası olmadığını unutmayın.
  • Yorum yapmanız, onaylanacağı anlamına gelmemektedir. Buradaki hususlara dikkat etmeniz, onaylanma şansını artıracaktır.
  • *

    Kapat
    E-posta ile paylaş