ActionScript 2.0’da Fonksiyon Kapsamını Anlamak

ActionScript 2.0’da iç içe bir fonksiyonu çağırmakta zorlanıyor musunuz? Yalnız değilsiniz. Bu sorun, diğer programlama dillerinden geçiş yapan geliştiricileri sıklıkla kafa karıştırmaktadır. Bu yazıda, ActionScript’teki fonksiyon deklarasyonlarının inceliklerini ele alacak ve fonksiyonlarınızı etkili bir şekilde çağırmak için sağlam çözümler sunacağız.

Karşılaşılan Problem

Senaryoyu inceleyelim. parentFunction() adlı bir fonksiyonunuz var ve bu fonksiyon içinde callMe() adlı başka bir fonksiyon bulunuyor. Amaç, callMe()‘yi kodunuzun başka bir yerinde, örneğin bir onRelease olay işleyicisinde çağırmaktır. İşte verilen kodun temel sorunu:

//Fonksiyon Deklarasyonları
function parentFunction()
{
    function callMe()
    {
        textField.text = "lawl";
    }
}

on(release) olayından callMe()‘yi çağırmaya çalıştığınızda, aşağıdaki çağrıların hiçbiri çalışmaz:

on(release)
{
    callMe(); // çalışmaz
    parentFunction().callMe(); // çalışmaz
    parentFunction.callMe(); // çalışmaz
}

Çözüm: Fonksiyon Kapsamını Anlamak

Neden Çalışmıyor

callMe()‘yi çağırma girişiminiz başarısız oluyor çünkü ActionScript 2.0’da fonksiyonlar kendi kapsamına sahiptir. callMe() fonksiyonunu parentFunction() içinde tanımladığınızda, bu özel bir fonksiyon haline gelir. Bu, callMe()‘nin tanımlandığı fonksiyonun dışından erişilemeyeceği anlamına gelir.

Fonksiyon Kapsamını Doğru Tanımlama

İç içe bir fonksiyonu başarılı bir şekilde çağırabilmek için birkaç kılavuza uymanız gerekir:

  1. Bir Fonksiyonu Başka Bir Fonksiyonun Dışında Tanımlama: Genel olarak, bir fonksiyona birden fazla yerden erişim sağlamak istiyorsanız, onu üst fonksiyonunun dışına tanımlayın.

    function callMe()
    {
        textField.text = "lawl";
    }
    
    function parentFunction()
    {
        // Diğer kodlar...
    }
    
  2. Nesne Döndüren Yöntemler Kullanma: Eğer fonksiyonu üst fonksiyonda kapsamak bir amaca hizmet ediyorsa, iç içe fonksiyonun ihtiyaç duyulduğunda erişilebilir olabilmesi için doğru mimariyi kurmalısınız. Genellikle, fonksiyonlar arasındaki karmaşık ilişkileri yönetmek için nesneleri kullanırsınız.

    • JavaScript’te benzer yöntemler, yöntemler için prototipler kullanır. Ancak, ActionScript’in kendi kuralları vardır.

Önerilen Kaynaklar

  • JavaScript’te fonksiyonların nasıl yapılandırılacağını daha iyi anlamak için JavaScript Nesneleri üzerine bu eğitim makalesine göz atın.
  • ActionScript’teki işlevselliğin daha incelikli kavramlarını kavramak için Adobe DevNet belgelere göz atın.

Son Düşünceler

Özetle, ActionScript 2.0’da iç içe fonksiyonların kapsama alanı, bulundukları fonksiyonlarla sınırlıdır. Böyle fonksiyonlara daha geniş bir erişim gerektiriyorsanız, onları global kapsamda tanımlamak veya uygun erişim kontrolleri oluşturmak için nesne yönelimli ilkeleri kullanmak daha tavsiye edilir. Özel ve genel fonksiyonlar arasındaki farklarla ilgili hâlâ kafanız karışıksa, JavaScript’in özel/genel fonksiyon tartışması üzerine bağlı makale ek bir netlik sağlayabilir.

Mutlu kodlamalar, ve sorularınız varsa ya da daha fazla yardıma ihtiyaç duyuyorsanız, çekinmeden ulaşın!