Görüntüleme listesi yaklaşımının avantajları

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

ActionScript 3.0'da, görüntüleme nesnelerinin farklı türleri için ayrı sınıflar vardır. ActionScript 1.0 ve 2.0'da, aynı nesne türlerinin çoğu MovieClip adındaki tek bir sınıfa dahil edilmiştir.

Sınıfların ve görüntüleme listelerinin hiyerarşik yapısının bu şekilde bireyselleştirilmesi, şu avantajları sağlar:

  • Daha verimli oluşturma ve düşük bellek tüketimi

  • Gelişmiş derinlik yönetimi

  • Görüntüleme listesinin tam çapraz geçişi

  • Liste dışı görüntüleme nesneleri

  • Görüntüleme nesnelerinin daha kolay şekilde alt sınıflara ayrılması

Daha verimli oluşturma ve daha küçük dosya boyutları

ActionScript 1.0 ve 2.0'da, yalnızca bir MovieClip nesnesinde şekil çizebilirsiniz. ActionScript 3.0'da, şekil çizebileceğiniz daha basit görüntü nesnesi sınıfları vardır. Bu ActionScript 3.0 görüntüleme nesnesi sınıfları, MovieClip nesnesinin içerdiği tüm yöntem ve özellik kümesini içermediğinden, bellek ve işlemci kaynaklarını daha az tüketir.

Örneğin, her MovieClip nesnesi, film klibinin zaman çizelgesine yönelik özellikleri içerirken Shape nesnesi bu özellikleri içermez. Zaman çizelgesinin yönetilmesine yönelik özellikler çok fazla bellek ve işlemci kaynağı tüketebilir. ActionScript 3.0'da, Shape nesnesinin kullanılması daha iyi performans elde edilmesini sağlar. Shape nesnesi, daha karmaşık olan MovieClip nesnesinden daha az yüke sahiptir. Flash Player ve AIR uygulamalarının kullanılmayan MovieClip özelliklerini yönetmesi gerekmez, bu da hızı artırıp nesnenin kullandığı bellek alanını azaltır.

Gelişmiş derinlik yönetimi

ActionScript 1.0 ve 2.0'da, derinlik doğrusal bir derinlik yönetimi şeması ve getNextHighestDepth() gibi yöntemlerle yönetiliyordu.

ActionScript 3.0, görüntüleme nesnelerinin derinliğinin yönetilmesi için daha kullanışlı yöntem ve özelliklere sahip olan DisplayObjectContainer sınıfını içerir.

ActionScript 3.0'da, bir görüntüleme nesnesini, DisplayObjectContainer örneğinin alt öğe listesinde yeni bir konuma taşıdığınızda, görüntüleme nesnesi kabındaki diğer alt öğeler otomatik olarak yeniden konumlandırılır ve bunlara görüntüleme nesnesi kabında uygun alt dizin konumları atanır.

Ayrıca, ActionScript 3.0'da herhangi bir görüntüleme nesnesi kabının alt nesnelerinin tümünün keşfedilmesi de her zaman mümkündür. Her DisplayObjectContainer örneği, görüntüleme nesnesi kabındaki alt öğelerin sayısını listeleyen bir numChildren özelliğine sahiptir. Ve görüntüleme nesnesi kabının alt öğe listesi her zaman dizinlenmiş bir liste olduğundan, 0 dizin konumundan son dizin konumuna (numChildren - 1) kadar listedeki her nesneyi inceleyebilirsiniz. ActionScript 1.0 ve 2.0'da, MovieClip nesnesinin yöntemleri ve özellikleriyle bu mümkün değildi.

ActionScript 3.0'da, görüntüleme listesinde sırayla geçiş yapabilirsiniz; görüntüleme nesnesi kabının alt öğe listesinin dizin sayılarında herhangi bir boşluk yoktur. Görüntüleme listesinde geçiş yapılması ve nesnelerin derinliğinin yönetilmesi, ActionScript 1.0 ve 2.0'a göre daha kolaydır. ActionScript 1.0 ve 2.0'da, bir film klibi derinlik sırasında kesintili boşlukların bulunduğu nesneleri içerebiliyordu, bu da nesne listesinde geçiş yapılmasını güçleştirebiliyordu. ActionScript 3.0'da, görüntüleme nesnesi kabının her alt öğe listesi dahili olarak bir dizi şeklinde önbelleğe alınır ve bu da çok hızlı arama (dizine göre) yapılmasını sağlar. Görüntüleme nesnesi kabının tüm alt öğelerinin döngüye alınması da çok hızlıdır.

ActionScript 3.0'da, DisplayObjectContainer sınıfının getChildByName() yöntemini kullanarak görüntüleme nesnesi kabındaki alt öğelere erişebilirsiniz.

Görüntüleme listesinin tam çapraz geçişi

ActionScript 1.0 ve 2.0'da, Flash geliştirme aracında çizilmiş vektör şekilleri gibi bazı nesnelere erişemezdiniz. ActionScript 3.0'da, ActionScript kullanılarak oluşturulmuş olan nesneler ve Flash geliştirme aracında oluşturulmuş tüm görüntüleme nesneleri dahil olmak üzere, görüntüleme nesnesindeki tüm nesnelere erişebilirsiniz. Ayrıntılar için, bkz. Görüntüleme listesinde geçiş yapma.

Liste dışı görüntüleme nesneleri

ActionScript 3.0'da, görünebilir görüntüleme listesinde olmayan görüntüleme nesneleri oluşturabilirsiniz. Bunlar liste dışı görüntüleme nesneleri olarak bilinir. Yalnızca önceden görüntüleme listesine eklenmiş bir DisplayObjectContainer örneğinin addChild() veya addChildAt() yöntemini çağırdığınızda görüntüleme nesnesi görünebilir görüntüleme listesine eklenir.

Birden çok görüntüleme nesnesinin bulunduğu birden çok görüntüleme nesnesi kabını içeren görüntüleme nesneleri gibi karmaşık görüntüleme nesnelerini birleştirmek için, liste dışı görüntüleme nesnelerini kullanabilirsiniz. Görüntüleme nesnelerini liste dışında tutarak, bu görüntüleme nesnelerini oluşturmaya yönelik işleme zamanını kullanmadan karmaşık nesneleri birleştirebilirsiniz. Daha sonra gerektiğinde liste dışı görüntüleme nesnesini görüntüleme nesnesine ekleyebilirsiniz. Ayrıca, bir görüntüleme nesnesi kabının alt öğesini görüntüleme listesinin içine veya dışına ya da görüntüleme listesindeki istediğiniz herhangi bir konuma taşıyabilirsiniz.

Görüntüleme nesnelerinin daha kolay şekilde alt sınıflara ayrılması

ActionScript 1.0 ve 2.0'da, temel şekiller oluşturmak veya bitmap'leri görüntülemek için sık sık bir SWF dosyasına yeni MovieClip nesneleri eklemeniz gerekir. ActionScript 3.0'da, DisplayObject sınıfı, Shape ve Bitmap de dahil olmak üzere birçok yerleşik alt sınıfı içerir. ActionScript 3.0'daki sınıflar belirli nesne türleri için daha özelleştirilmiş olduğundan, yerleşik sınıfların temel alt sınıflarının oluşturulması daha kolaydır.

Örneğin, ActionScript 2.0'da bir daire çizmek için, özel sınıfın bir nesnesi başlatıldığında MovieClip sınıfını genişleten bir CustomCircle sınıfı oluşturabilirdiniz. Ancak bu sınıf, MovieClip sınıfındaki, söz konusu sınıf için geçerli olmayan birçok özellik ve yöntemleri de (örn. totalFrames) içerirdi. ActionScript 3.0'da ise, Shape nesnesini genişleten ve bu nedenle MovieClip sınıfında bulunan ilgisiz özellik ve yöntemleri içeremeyen bir CustomCircle sınıfını oluşturabilirsiniz. Aşağıdaki kod, bir CustomCircle sınıfı örneğini gösterir:

import flash.display.*; 
 
public class CustomCircle extends Shape 
{ 
    var xPos:Number; 
    var yPos:Number; 
    var radius:Number; 
    var color:uint; 
    public function CustomCircle(xInput:Number,  
                                        yInput:Number,  
                                        rInput:Number,  
                                        colorInput:uint) 
    { 
        xPos = xInput; 
        yPos = yInput; 
        radius = rInput; 
        color = colorInput; 
        this.graphics.beginFill(color); 
        this.graphics.drawCircle(xPos, yPos, radius); 
    } 
}