Önemli sözdizimi değişikliklerinden biri, paket içindeki sınıf tanımlarında gerçekleşmiştir. ActionScript 2.0'da, bir sınıf bir paketin içindeyse, sınıf bildirimine paket adının da dahil edilmesi gerekir. package deyimini ilk defa sunan ActionScript 3.0'da, paket adının, sınıf bildirimine değil, paket bildirimine dahil edilmesi gerekir. Örneğin, aşağıdaki sınıf bildirimleri, flash.display paketinin bir parçası olan BitmapData sınıfının ActionScript 2.0 ve ActionScript 3.0'da nasıl tanımlandığını gösterir:public class Shape{
var visible:Boolean = true;
}
// ActionScript 2.0
class flash.display.BitmapData {}
// ActionScript 3.0
package flash.display
{
public class BitmapData {}
}
Sınıf nitelikleri
ActionScript 3.0, aşağıdaki dört nitelikten birini kullanarak sınıf tanımlarını değiştirmenize olanak sağlar:Nitelik | Tanım |
---|---|
dynamic | Çalışma zamanında örneklere özellik eklenmesine olanak sağlar. |
final | Başka bir sınıf tarafından genişletilmemelidir. |
internal (varsayılan) | Geçerli paketin içindeki başvurular tarafından görülebilir. |
public | Her yerdeki başvurular tarafından görülebilir |
dynamic class Shape {}Listede abstract adında bir nitelik bulunmadığına dikkat edin. Bunun nedeni, abstract sınıflarının ActionScript 3.0'da desteklenmemesidir. Ayrıca listede private ve protected adındaki niteliklerin de bulunmadığına dikkat edin. Bu nitelikler yalnızca bir sınıf tanımı içinde anlam içerir ve tek başlarına sınıflara uygulanamaz. Bir sınıfın paket dışında herkes tarafından görülebilir olmasını istemiyorsanız, sınıfı bir paketin içine yerleştirin ve internal niteliğiyle işaretleyin. Alternatif olarak, hem internal hem de public niteliklerini çıkarabilirsiniz, böylece derleyici internal niteliğini otomatik olarak sizin için ekler. Bir sınıfın tanımlandığı kaynak dosya dışında görülebilir olmasını istemiyorsanız, sınıfı paket tanımının kapatma küme ayracının aşağısına, kaynak dosyanızın en altına yerleştirin.
Sınıf gövdesi
Küme ayraçları içine alınan sınıf gövdesi, sınıfınızın değişkenlerini, sabitlerini ve yöntemlerini tanımlamak için kullanılır. Aşağıdaki örnek, Adobe Flash Player API'sinde Accessibility sınıfının bildirimini gösterir:public final class Accessibility
{Bir sınıf gövdesinin içinde bir ad alanını da tanımlayabilirsiniz. Aşağıdaki örnek, bir ad alanının, nasıl sınıf gövdesi içinde tanımlanabildiğini ve o sınıftaki yöntemin bir niteliği olarak kullanılabildiğini gösterir:
public static function get active():Boolean;
public static function updateProperties():void;
}
ActionScript 3.0, tanımları yalnızca sınıf gövdesine değil, deyimlere de dahil etmenize olanak sağlar. Bir sınıf gövdesinin içinde bulunduğu halde yöntem tanımının dışında bulunan deyimler, tam olarak bir defa çalıştırılır—sınıf tanımıyla ilk karşılaşılıp ilişkilendirilmiş sınıf nesnesi oluşturulduğunda. Aşağıdaki örnek, hello() adındaki bir harici işleve yapılan çağrıyı ve sınıf tanımlandığında onaylama mesajı veren bir trace deyimini içerir:public class SampleClass { public namespace sampleNamespace; sampleNamespace function doSomething():void; }
Önceki ActionScript sürümlerinin aksine, ActionScript 3.0'da, aynı sınıf gövdesinde aynı ada sahip bir statik özelliğin ve örnek özelliğinin tanımlanmasına izin verilir. Örneğin, aşağıdaki kod, message adında bir statik değişkeni ve aynı ada sahip bir örnek değişkenini bildirir:function hello():String { trace("hola"); } class SampleClass { hello(); trace("class created"); } // output when class is created hola class created
class StaticTest { static var message:String = "static variable"; var message:String = "instance variable"; } // In your script var myST:StaticTest = new StaticTest(); trace(StaticTest.message); // output: static variable trace(myST.message); // output: instance variable
Bazı Dersler
0 yorum:
Yorum Gönder