Flash Değişken Tanımlama

İsimli konu WH 'Grafik Tasarımı' kategorisinde, orjinal2.0 üyesi tarafından 14 Kasım 2008 tarihinde yazılmıştır. Flash Değişken Tanımlama hakkında bilgi ve tartışmalar.


  1. Bu dersimizde flash'ta değişken tanımlayarak ve bu değişkenleri kullanarak, animasyonumuza interaktiflik katmayı öğreneceğiz. Bunun için en güzel animasyon hesap yapabilen bir animasyon olabilir. Boş bir çalışma sayfasında CTRL+L'ya basıp kütüphanemizi açalım. Options düğmesini kullanarak "new symbol" ile yeni sembol yaratalım. Ancak "behavior" yani davranış biçimi olarak button seçelim. Button'un isminede "rakam1" diyelim. Karşımıza gelen ekrana küçük bir kare çizelim ve içine "1" rakamını yazalım. Sonra tümünü kopyalayarak yeni bir button daha oluşturup, buraya yapıştıralım. Ve her yeni button'a bir rakam verelim. Şimdi elimizde üzerinde "0"dan "9"a kadar olan 10 adet düğme oluştu. Aynı yöntemle "+" , "-" , "/" , "*" , "=" , "." işlemlerini ifade edecek düğmeleri de yapalım.Ve devam edelim, bu sefer üzerinde "CE" , "C" , "MRC" , "M+" yazan düğmelerinide yaparak tüm düğmelerimizi oluşturalım. Biz buraya kadar ne yaptık? Toplam 20 adet düğme yaptık. Bunların 10 tanesi rakamları ifade ediyor. Bir tanesi noktalamayı ifade ediyor. Beş tanesi toplama, çıkarma, çarpma, bölme ve eşittiri ifade ediyor. Birisi hafızaya almayı ifade ediyor. Birisi hafızayı göstermeyi, diğerleride ekranı silme ile tüm işlemleri silmeyi ifade ediyor. Yani basit bir hesap makinasında olması gereken herşey var. Bunu yapmayı öğrendikten sonra fonksyonları arttırmak sizin elinizde.

    Artık Scene1 yazılı ekranımıza dönebiliriz. Yaptığımız tüm düğmeleri ekrana sürükleyerek düzgün bir şekilde dizelim. Sonra sahnenin üstüne bir "text field" koyalım. Bunu alet kutusundaki "A" text dümesine basıp, modifier kısmındaki abl yazılı düğmeye basarak yapabilirsiniz. Şimdi sahnemizde hesap makinamızın tüm tuşları ve ekranı oluşmuş oldu. Hazır hesap makinamızın ekranını yapmışken üzerinde sağ tıklayıp, properties'ine girelim. Açılan pencerede en üstte yazan variable kısmına "ekran" yazalım. Buraya "ekran" yazmamızın nedeni, ileride yazacağımız program akışına göre ekran değişkenine istediğimiz değeri atayabileceğiz. Ve bu değişkene atadığımız değerleri "text field" kısmında görebileceğiz.

    Artık hesap makinamız görünüş itibarı ile hazır sayılır. Şimdi ilk değişkenlerimizi tanımlayalım. Layer 1'de duran tek keyframe'in üstüne sağ tıklayıp, properties'inden Actions'a geçelim. Komut listesinden "Set Variables"e basalım. Yan tarafta iki adet "text field" yani yazı yazabileceğimiz alan çıktı. Birisi "variable"; yani değişkenimiz, diğeri "value"; yani değişkene atayacağımız değer. Birinci değişkenimize "hafiza" diyelim ve değer olarak "0" atayalım.

    Dikkat: Değişken isimlerimizde asla tükçe karakter bulunmamalı. Zaten yazmak istediğiniz zaman bir uyarı mesajı alacaksınız. İkinci konu, değişkenimiz ve değerinin özelliği nasıl olmalıdır. Yani değişkenimizin alfanümerik karakter özelliğe sahip olmasını istiyorsak bunu çift tırnak içinde tanımlamalıyız. Aynı şey değeri içinde geçerlidir. Eğer rakamsal özelliğinden yararlanacaksak, bu sefer tırnak işaretlerini kaldırmalısınız. Bunu en sağda bulunan "abc - string literal" yada "= - expression" düğmesine basarak yapabilirsiniz. "abc" string literal, değişkenlerimizi alfanümerik olarak yorumlar ve çift tırnak içine alır. "=" expression ise değişkenlerimizi rakam gibi yorumlar ve tırnak içine almaz. Bunu bir örnekle anlatalım. Diyelimki rakam1 ve rakam2 isimli iki değişkenimiz var, değerleride 100 ve 200 olsun. Bunları çift tırnak içine alırsak, yani string literal yaparsak, bu iki değeri "+" ile toplamaya kalktığımızda yeni değerimiz "rakam1rakam2" olacaktır. Ama çift tırnak içine almazsak, yeni değerimiz 300 olur.

    "rakam1"="100" , "rakam2"="200"
    "sonuc"="rakam1"+"rakam2"
    "sonuc"="rakam1rakam2"
    rakam1=100 , rakam2=200
    sonuc=300

    İkinci değişken olarakta "ekran" diyelim ve değer olarak yine "0" atayalım. Değişkenlerimizi tanıttıktan sonra "Stop" komutunu vererek buradaki işimizi bitirelim. "hafiza" değişkenimiz aslında "M+" tuşuna basıldığı zaman atayacağımız değer. "ekran" ise hesap makinamızın ekranındaki değerdir ve şimdilik ikiside sıfırdır. İşlemlerimiz bittiyse aşağıdaki gibi bir komut satırı çıkacaktır.

    Set Variable: "hafiza" = "0"
    Set Variable: "ekran" = "0"
    Stop

    Layer1'deki zaman eksenine bir frame daha yerleştirelim. Ve bu frame'in üzerinde sağ tıklayıp properties'ini açalım. Actions'a geçmeden önce "Label" kulakçığını tıklayalım ve "name" kısmına "RakamEkle" yazalım. Bu şekilde ikinci frame'in sadece hesap makinamızın ekranına rakam eklemek olduğunu söylüyoruz. Bu "RakamEkle" ismini daha sonra çağırarak kullanacağız. Artık "Actions"a geçebiliriz. Şimdi komutlarımızı yazmadan önce düşünelim. Her bir rakam için yaptığımız buttonlardan gelecek değere bir değişken vermek lazım. Bu değişkene "rakam" diyebiliriz. Basitçe "ekran" değişkenine "rakam" değişkenini atarsak ekranımızda rakamı görürüz. Yani "Set Variable: "ekran" = rakam". Ama bu şekilde asla iki ve daha üstü basamaklı sayıları yazdıramayız. Her yeni rakama bastığımızda önceki rakam silinecektir. Bir de arka arkaya nokta basılmasını engelleyemeyiz. O zaman şöyle bir şey yazalım:

    If (ekran eq "0" and not(rakam eq "."))
    Set Variable: "ekran" = rakam
    Else
    Set Variable: "ekran" = ekran & rakam
    End If

    İlk önce artıya basarak If komutunu çağırın. Yan tarafta "Condition" isimli bir yazı alanı çıkacak. Buraya değilde onun yanındaki "=" işaretine basarak karşımıza gelecek pencereye yazalım. Parantez işaterini kendisi yazdığından bizim yazmamıza gerek yok. "ekran" yazdıktan sonra "operator" kısmında bulunan eq ifadesine çift tıklayın. Tırnak içinde sıfır yazın. Sonra yine "operator"dan "and" ve "not" ifadelerine çift tıklayın. Sonrada parantez içinde rakam yazıp "operator"dan "eq", ve tırnak içinde nokta yazıp bitirin. "Else" ifadesi için "Condition" penceresinin altındaki "Add Else/Else If Clause" düğmesine basın ve nerede kullanmak isterseniz "Actions" penceresinin üstündeki ok işaretleri ile kaydırın.

    Şimdi gelelim ne yaptığımıza. Eğer ekran değişkenimiz sıfırsa ve rakam değişkenimiz nokta değilse (burada noktaya iki kere basılmasını önleyelim) ekran değişkenimize rakam değişkenini ata. Değilse (Else) ekran değişkenimize ekranla birlikte rakam değişkenimizi ata. Yani ekranda sıfır yazıyor ve rakamımız nokta değilse hangi rakama bastıysak onu ekrana yaz. Yok eğer ekranda bazı rakamlar varsa o zaman onun yanına yeni bastığımız değeride yaz. Fakat dikkat ediyormusunuz, değişkenimiz alfanümerik, değeri ise rakamsal şekilde ifade ediliyor. Eğer değerini de alfanümerik yapmaya kalkarsak o zaman ekrana yazı ile "rakam" yada "ekran&rakam" yazılacaktır. Evet herhalde olmuştur. Ama birşeyler eksik. Kullanıcı bir işlem yapıp eşittire bastıktan sonra tüm değerleri sıfırlamamız gerekir. O zaman bir değişken daha tanımlayalım ve işlem yapıldıktan sonra o değişkene bir değer verelim. Eğer bu değişkenimiz verdiğimiz değere eşitse işlem yapılmış sayıp tüm değişkenleri (hafıza hariç) sıfırlayalım.

    If (islemtamam = 1)
    Set Variable: "islemtamam" = "0"
    Set Variable: "nokta" = "0"
    Set Variable: "ekran" = "0"
    End If
    If (ekran eq "0" and not (rakam eq "."))
    Set Variable: "ekran" = rakam
    Else
    Set Variable: "ekran" = ekran & rakam
    End If

    Evet artık tamamdır. Şimdi zaman eksenine bir frame daha yerleştirip, işlem yaptırma komutlarına geçebiliriz. Üçüncü frame'e sağ tıklayıp properties'inden "label" kulakçığına tıklayın ve "name" kısmına "IslemYap" diyelim ki bu ismi çağıdığımızda işlem yapılsın. Toplama, çarpma, çıkarma ve bölme işaretlerine basınca bir değişken vereceğiz. Bunun adı "islem" olsun. Şimdi herhangi bir işlem işaretine basmadan önceki ekran değeri ile basıldıktan sonraki ekran değeri, iki ayrı değişkeni ifade edeceğinden; işlem işaretine basıldıktan sonraki ekran değerini başka bir değişkene atamamız lazım. Mesela "oncekiekran". Bu atamayı işlem tuşlarında yapacağız. Artık işlemleri yaptırabiliriz. Eğer işlem değişkeni "+" ise "ekran" değişkenine "oncekiekran" ile "ekran" değişkenini toplayıp ata. Yani ekrana yazdır. Tüm bu işlemleri sırası ile yazarsak sonuç aşağıdaki gibi olur. En altta iki değişken tanımlaması dikkatinizi çekmiş olabilir. "islem" değişkenini sıfıra eşitlememizin nedeni, herhangi bir işlemin sonunda eşittire bastıktan sonra, işlem değişkeni en son değeri itibari ile dikkate alınacağından, ikinci işleme başladığınız zaman, işlemler karışacaktır. "islemtamam" değişkenini de bir önceki frame'de, yani "RakamEkle" bölümünde kullanmak üzere "1" değerini verdik.

    If (islem eq "+")
    Set Variable: "ekran" = oncekiekran + ekran
    End If
    If (islem eq "-")
    Set Variable: "ekran" = oncekiekran - ekran
    End If
    If (islem eq "*")
    Set Variable: "ekran" = oncekiekran * ekran
    End If
    If (islem eq "/")
    Set Variable: "ekran" = oncekiekran / ekran
    End If
    Set Variable: "islem" = "0"
    Set Variable: "islemtamam" = "1"

    Şimdi rakamlarımıza geçelim. Sıfır rakamının üzerinde sağ tıklayıp Actions'ı açın. Burada ilk önce rakam değişkenine üzerinde yazdığı rakamı atayalım. Sonrada "RakamEkle" frame'ine göndermemiz lazım. Bunu "Call" komutu ile yapabiliriz. "Call" ("RakamEkle") dediğimiz zaman "Label" "name"i "RakamEkle" olan frame'i çağırmış oluyoruz.Tüm rakamlar için aynı işlemi yapın.

    On (Release)
    Set Variable: "rakam" = "0"
    Call ("RakamEkle")
    End On

    Sıra geldi nokta işaretine. Burada dikkat edilmesi gerekn tek bir şey var oda üst üste nokta işaretini basmayı engellemek. Bunu basit bir if dönüsü ve değişken tanımlama ile yapabiliriz. "rakam" değişkenine "." değerini verdikten sonra, yine "RakamEkle" frame'ini çağırıp işyaptırıp, ardından da nokta değişkenine doğru, yani "true" değerini atamalıyız. En baştada, eğer nokta doğru değilse yada yanlışsa devam et aksi takdirde işlem yapma dersek bu iş olur.

    On (Release)
    If (nokta = false)
    Set Variable: "rakam" = "."
    Call ("RakamEkle")
    Set Variable: "nokta" = true
    End If
    End On

    Şimdi de işlem düğmelerimize bakalım. "islem" değişkenimize üzerinde yazan işlem işaretini değer olarak atayalım. Sonrada ekranda bulunan değeri başka bir değere atayalımki bundan sonra yazacağımız değer karışmasın. Mesela işlem düğmesine basmadan önceki ekran değerini "oncekiekran" olarak değiştirelim. Artık ekrana ne yazarsanız yazın daha önce yazdığınız değer kaybolmayacaktır. Ancak kullanıcı eşittir'e basmadan da arka arkaya işlem yapabilir. Mesela 3 adet değeri toplamaya kalktığında her seferinde eşittire basmaktansa, her değeri girdikten sonra, işlem düğmesine basabilir. Bunun için en başta "IslemYap" isimli frame'i çağırıp işlem yaptırmamız lazım. Onu da "Call" ile yapabileceğimizi öğrenmiştik.

    On (Release)
    Call ("IslemYap")
    Set Variable: "islem" = "+"
    Set Variable: "oncekiekran" = ekran
    End On

    Eşittir işaretine basınca sadece "IslemYap" frame'ini çağırmamız yeterli olacaktır.

    On (Release)
    Call ("IslemYap")
    End On

    "CE" düğmesine basınca herşeyi sıfırlamamız gerekir. Ekrana sıfır yazacağız, "islem"in değerini boşaltacağız ve diğerlerini yanlış olarak yani "false" olarak değiştireceğiz.

    On (Release)
    Set Variable: "oncekiekran" = false
    Set Variable: "ekran" = "0"
    Set Variable: "islem" = ""
    Set Variable: "islemtamam" = false
    Set Variable: "nokta" = "false"
    End On

    "C" düğmesine bastığınız zaman en son yazdığınız rakamı silmesi için sadece "ekran" değişkenine sıfır atamak ve nokta işaretini yazdırabilmek için "false" değerini vermek yeterli olacaktır.

    On (Release)
    Set Variable: "ekran" = "0"
    Set Variable: "nokta" = false
    End On

    "M+" düğmesi ekranda yazılı olan rakamı hafızaya almak içindir. O zaman en başta verdiğimiz "hafiza" değişkenine "ekran"daki değeri atamamız lazım. Ancak hafıza her seferinde toplanmak istendiğinde en son "hafiza" değişkeni ile "ekran" değişkenini toplamak lazım.

    On (Release)
    Set Variable: "hafiza" = hafiza + ekran
    End On

    En son olarak hafızadaki değeri ekrana yazdırıp sıfırlayan "MRC" düğmesine bakalım. "ekran" değişkenine "hafiza" değişkeninin değerini atamalıyız. "hafiza" değişkenini sıfırlamalıyız. "islemtamam" değişkenide "true" yani doğru yapmalıyız. Artık hesap makinamızı kullanabiliriz. İsterseniz ilave tuşlar koyabilirsiniz. Mesela karesini alma, karekök... Ama bu işlemler için eşittir işaretine basmamıza gerek olmadığından ilgili düğmenin actions'ında yapmamız gerekir.

    On (Release)
    Set Variable: "ekran" = hafiza
    Set Variable: "hafiza" = "0"
    Set Variable: "islemtamam" = true
    End On
    14 Kasım 2008
    #1
  2. Flash Değişken Tanımlama Cevapları

soru sor

Flash Değişken Tanımlama