En Güncel Flashlar

Kişisel Portföy Sitesi TemplatesiKişisel Portföy Sitesi TemplatesiKişisel, kendinize özel yapacağınız sitelerinizde gayet işe yarayacaktır. Hangi sektör olursa olsun, her sektöre uyum sağlayabilecek bit templatedir....

İncele

Adobe Flash Player Versiyon 10 YükleAdobe flash player ailesine yeni bir kalite daha kattı. Adobe flash player 10...

İncele

Home Refinance LoanOto Galeri İçin Flash Templateler - Tm 15522 İndir Oto galerileri için güzel, basit bir flash site templatesidir. Özellikle sıfır araç satışı yapan firmalar için gayet uygun olabilecek bir templatededir....

İncele

Flash Patlama Ses Efektleri 55 adetFlash dökümanlarınızda kullanabileceğiniz çeşit çeşit ses dosyalarını bulabileceksiniz...

İncele

Flash AS3 DersleriActionScript 3.0 ile ilgili öğrenmek istediğiniz herşey blogumuzda...

İncele

Rss

Flash As3 Temel işlev kavramları

Gönderen graficihad | Etiketler: as3 temel işlevler, flash as3 ders, flash işlev kavramları, flash temel işlevler | Posted on 8 Eylül 2009 Salı

Bu bölümde, temel işlev tanımı ve çağırma teknikleri ele alınmaktadır.

İşlevleri çağırma

Bir işlevin, ardından parantez operatörü (()) gelen tanımlayıcısını kullanarak o işlevi çağırabilirsiniz. İşleve göndermek istediğiniz herhangi bir işlev parametresini kapsamak için parantez operatörünü kullanırsınız. Örneğin, bu kitapta, ActionScript 3.0'da üst düzey işlev olan trace() işlevi kullanılmıştır:

trace("Use trace to help debug your script");

Herhangi bir parametre içermeyen bir işlevi çağırıyorsanız, boş bir parantez çifti kullanmanız gerekir. Örneğin, rastgele bir sayı oluşturmak için, herhangi bir parametre almayan Math.random() yöntemini kullanabilirsiniz:

var randomNum:Number = Math.random();

Kendi işlevlerinizi tanımlama

ActionScript 3.0'da bir işlevi tanımlamanın iki yolu vardır: bir işlev deyimini veya işlev ifadesini kullanabilirsiniz. Seçtiğiniz teknik, daha statik veya daha dinamik bir programlama stili seçmenize bağlıdır. Statik veya katı mod programlamayı tercih ediyorsanız işlevlerinizi işlev deyimleriyle tanımlayın. Aksini yapmanız gerekiyorsa, işlevlerinizi işlev ifadeleriyle tanımlayın. İşlev ifadeleri, dinamik veya standart mod programlamada daha sık kullanılır.

İşlev deyimleri

İşlev deyimleri, katı modda işlevleri tanımlamak için tercih edilen tekniktir. Bir işlev deyimi, function anahtar sözcüğüyle başlar ve şunlarla devam eder:

  • İşlev adı

  • Parantez içindeki virgül sınırlı bir listede yer alan parametreler

  • İşlev gövdesi—başka bir deyişle, işlev çağrıldığında çalıştırılacak, küme ayracı içine alınmış ActionScript kodu

    Örneğin, aşağıdaki kod, bir parametreyi tanımlayan bir işlev oluşturur ve sonra parametre değeri olarak “ hello" dizesini kullanarak işlevi çağırır:

    function traceParameter(aParam:String)
    {
    trace(aParam);
    }

    traceParameter("hello"); // hello

İşlev ifadeleri

Bir işlev bildirmenin ikinci yolu, aynı zamanda bazen bir işlev değişmezini veya adsız işlevi çağıran işlev ifadesiyle bir atama deyiminin kullanılmasıdır. Bu, önceki ActionScript sürümlerinde yaygın olarak kullanılan daha ayrıntılı bir yöntemdir.

İşlev ifadesi içeren bir atama deyimi, var anahtar sözcüğüyle başlar ve şunlarla devam eder:

  • İşlev adı

  • İki nokta operatörü (:)

  • Veri türünü belirtecek Function sınıfı

  • Atama operatörü (=)

  • function anahtar sözcüğü

  • Parantez içindeki virgül sınırlı bir listede yer alan parametreler

  • İşlev gövdesi—başka bir deyişle, işlev çağrıldığında çalıştırılacak, küme ayracı içine alınmış ActionScript kodu

    Örneğin, aşağıdaki kod, bir işlev ifadesi kullanarak traceParameter işlevini bildirir:

    var traceParameter:Function = function (aParam:String)
    {
    trace(aParam);
    };
    traceParameter("hello"); // hello

    İşlev deyiminde yaptığınız gibi bir işlev adı belirtmediğinize dikkat edin. İşlev ifadeleri ile işlev deyimleri arasındaki başka bir önemli fark, işlev ifadesinin deyim yerine bir ifade olmasıdır. Başka bir deyişle, bir işlev ifadesi, işlev deyimi gibi tek başına duramaz. İşlev ifadesi yalnızca bir deyimin parçası olarak kullanılabilir ve bu genellikle bir atama deyimi olur. Aşağıdaki örnek, bir dizi örneğine atanmış işlev ifadesini gösterir:

    var traceArray:Array = new Array();
    traceArray[0] = function (aParam:String)
    {
    trace(aParam);
    };
    traceArray[0]("hello");

Deyimler ile ifadeler arasında tercih yapma

Genel bir kural olarak, belirli koşullar bir ifade kullanımını gerektirmediği sürece, işlev deyimini kullanın. İşlev deyimleri daha az ayrıntılıdır ve katı mod ile standart mod arasında işlev ifadelerine göre daha tutarlı bir deneyim sağlar.

İşlev deyimlerinin okunması, işlev ifadelerini içeren atama deyimlerinden daha kolaydır. İşlev deyimleri kodunuzu daha kısa hale getirir; hem var hem de function anahtar sözcüklerini kullanmanızı gerektiren işlev ifadelerinden daha az karmaşıktır.

İşlev deyimleri, bir işlev deyimi kullanılarak bildirilmiş bir yöntemi çağırmak için nokta sözdizimini hem katı hem de standart modda kullanabilmenize olanak sağladığından, iki derleyici modu arasında daha tutarlı bir deneyim sağlar. Bu bir işlev ifadesiyle bildirilmiş yöntemler için her zaman geçerli değildir. Örneğin, aşağıdaki kod, iki yöntemle Example adında bir sınıfı tanımlar: bir işlev ifadesiyle bildirilen methodExpression() yöntemi ve bir işlev deyimiyle çağrılan methodStatement() yöntemi. Katı modda, methodExpression() yöntemini çağırmak için nokta sözdizimini kullanamazsınız.

class Example
{
var methodExpression = function() {}
function methodStatement() {}
}

var myEx:Example = new Example();
myEx.methodExpression(); // error in strict mode; okay in standard mode
myEx.methodStatement(); // okay in strict and standard modes

İşlev deyimleri, çalışma zamanını veya dinamik davranışı esas alan programlamalar için daha uygun olarak değerlendirilir. Katı modu kullanmayı tercih ediyorsanız ancak diğer yandan bir işlev ifadesiyle bildirilmiş bir yöntemi çağırmanız gerekiyorsa, iki teknikten herhangi birini kullanabilirsiniz. İlk olarak, köşeli ayraçları ([]) nokta (.) operatörü yerine kullanarak yöntemi çağırabilirsiniz. Aşağıdaki yöntem çağrısı hem katı modda hem de standart modda başarılı olur:

myExample["methodLiteral"]();

İkinci olarak, sınıfın tamamını dinamik sınıf olarak bildirebilirsiniz. Bu, nokta operatörünü kullanarak yöntemi çağırmanıza olanak sağlasa da, bunun dezavantajı, söz konusu sınıfın tüm örnekleri için bazı katı mod işlevselliğinden taviz vermenizdir. Örneğin, bir dinamik sınıf örneğinde tanımsız bir özelliğe erişmeyi denerseniz, derleyici bir hata oluşturmaz.

İşlev ifadelerinin kullanışlı olduğu bazı koşullar vardır. İşlev ifadelerinin yaygın olarak kullanıldığı koşullardan biri, yalnızca bir defa kullanılan ve sonra atılan işlevlerdir. Daha az yaygın olarak da bir işlevin bir prototip özelliğine eklenmesi için kullanılabilir. Daha fazla bilgi için, bkz. Prototip nesnesi.

İşlev deyimleri ile işlev ifadeleri arasında, kullanılacak tekniği seçerken dikkate almanız gereken iki küçük fark vardır. Birinci fark, işlev ifadelerinin bellek yönetimi ve çöp toplamaya göre nesneler olarak bağımsız şekilde bulunmamasıdır. Başka bir deyişle, dizi öğesi veya nesne özelliği gibi başka bir nesneye bir işlev ifadesi atadığınızda, kodunuzda yalnızca o işlev ifadesine başvuru oluşturursunuz. İşlev ifadenizin eklendiği dizi veya nesne kapsam dışına çıkarsa ya da artık kullanılamazsa, artık işlev ifadesine erişemezsiniz. Dizi veya nesne silinirse, işlev ifadesinin kullandığı bellek, çöp toplama için uygun olur; başka bir deyişle, bellek başka amaçlar için geri istenmeye ve yeniden kullanılmaya uygun olur.

Aşağıdaki örnek, bir işlev ifadesi için, ifadenin atandığı özellik silindikten sonra işlevin artık kullanılamadığını gösterir. Test sınıfı dinamiktir, başka bir deyişle, bir işlev ifadesi içeren functionExp adında bir özellik ekleyebilirsiniz. functionExp() işlevi nokta operatörüyle çağrılabilir, ancak functionExp özelliği silindikten sonra artık işleve erişilemez.

dynamic class Test {}
var myTest:Test = new Test();

// function expression
myTest.functionExp = function () { trace("Function expression") };
myTest.functionExp(); // Function expression
delete myTest.functionExp;
myTest.functionExp(); // error

Diğer bir yandan, işlev ilk olarak bir işlev deyimiyle tanımlanırsa, kendi nesnesi olarak varolur ve siz işlevin eklendiği özelliği sildikten sonra da işlev varolmaya devam eder. delete operatörü yalnızca nesnelerin özelliklerinde çalışır, bu nedenle, stateFunc() işlevini silme çağrısı çalışmaz.

dynamic class Test {}
var myTest:Test = new Test();

// function statement
function stateFunc() { trace("Function statement") }
myTest.statement = stateFunc;
myTest.statement(); // Function statement
delete myTest.statement;
delete stateFunc; // no effect
stateFunc();// Function statement
myTest.statement(); // error

İşlev deyimleri ile işlev ifadeleri arasındaki ikinci bir fark, işlev deyimlerinin, işlev deyiminden önce görüntülenen deyimler de dahil olmak üzere, tanımlandıkları kapsamda varolmalarıdır. İşlev ifadeleri, bunun tersine yalnızca sonraki deyimler için tanımlanır. Örneğin, aşağıdaki kod tanımlanmadan önce scopeTest() işlevini başarıyla çağırırsa:

statementTest(); // statementTest

function statementTest():void
{
trace("statementTest");
}

İşlev ifadeleri, tanımlanmadan önce kullanılamaz, bu nedenle de aşağıdaki kod bir çalışma zamanı hatası oluşturur:

expressionTest(); // run-time error

var expressionTest:Function = function ()
{
trace("expressionTest");
}

İşlevlerden değerleri döndürme

İşlevinizden bir değer döndürmek için, ardından, döndürmek istediğiniz ifade veya değişmez değerin geldiği return deyimini kullanın. Örneğin, aşağıdaki kod, parametreyi temsil eden bir ifade döndürür:

function doubleNum(baseNum:int):int
{
return (baseNum * 2);
}

return deyiminin işlevi sonlandırdığına dikkat edin, böylece aşağıdaki gibi, return deyiminin aşağısındaki deyimler çalıştırılmaz:

function doubleNum(baseNum:int):int {
return (baseNum * 2);
trace("after return"); // This trace statement will not be executed.
}

Katı modda, bir döndürme türü belirtmeyi seçerseniz, ilgili türde bir değer döndürmeniz gerekir. Örneğin, aşağıdaki kod geçerli bir değer döndürmediğinden, katı modda bir hata oluşturur:

function doubleNum(baseNum:int):int
{
trace("after return");
}

Yuvalanmış işlevler

İşlevleri yuvalayabilirsiniz, başka bir deyişle, işlevler diğer işlevler içinde bildirilebilir. Yuvalanmış işlevin başvurusu harici koda iletilmediği sürece, yuvalanmış bir işlev yalnızca üst işlevi içinde kullanılabilir. Örneğin, aşağıdaki kod, getNameAndVersion() işlevi içinde iki yuvalanmış işlev bildirir:

function getNameAndVersion():String
{
function getVersion():String
{
return "10";
}
function getProductName():String
{
return "Flash Player";
}
return (getProductName() + " " + getVersion());
}
trace(getNameAndVersion()); // Flash Player 10

0 yorum:

Yorum Gönder

Flash Template Download