Film klibi örneği: RuntimeAssetsExplorer

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

ActionScript için Dışa Aktar işlevselliği, özellikle birden çok projede kullanışlı olabilecek kütüphaneler için avantajlıdır. Flash Player veya AIR bir SWF dosyasını çalıştırırsa, ActionScript'e dışa aktarılmış semboller, yüklemeyi yapan SWF ile aynı güvenlik sanal alanında bulunan tüm SWF dosyaları için kullanılabilir olur. Bu şekilde tek bir Flash belgesi, yalnızca grafiksel varlıkları barındırma amacıyla tasarlanmış bir SWF dosyası oluşturabilir. Bu teknik özellikle görsel varlıklar üzerinde çalışan tasarımcıların, daha sonra çalışma zamanında grafiksel varlıklar SWF dosyasını yükleyen "sarıcı" bir SWF dosyası oluşturan geliştiricilerle paralel çalışabildiği daha büyük projeler için kullanışlıdır. Grafiksel varlıkların programlama geliştirmesinin ilerlemesine bağlı olmadığı sürümlenmiş dosyalar dizisini korumak için bu yöntemi kullanabilirsiniz.

RuntimeAssetsExplorer uygulaması, RuntimeAsset öğesinin alt sınıfı olan herhangi bir SWF dosyasını yükler ve bu SWF dosyasının kullanılabilir varlıklarına gözatmanıza olanak sağlar. Bu örnekte şunlar gösterilir:

  • Loader.load() öğesini kullanarak harici bir SWF dosyasını yükleme

  • ActionScript için dışa aktarılmış bir kütüphane sembolünün dinamik oluşumu

  • MovieClip oynatımının ActionScript denetimi

Başlamadan önce, Flash Player'da çalıştırılacak SWF dosyalarının her birinin aynı güvenlik sanal alanında bulunması gerektiğini unutmayın. Daha fazla bilgi için, bkz. Güvenlik sanal alanları .

Bu örneğin uygulama dosyalarını almak için, Flash Professional Örnekleri dosyasını indirin. RuntimeAssetsExplorer uygulama dosyalarını Samples/RuntimeAssetsExplorer klasöründe bulabilirsiniz. Uygulama aşağıdaki dosyaları içerir:

File

Açıklama

RuntimeAssetsExample.mxml

veya

RuntimeAssetsExample.fla

Flex (MXML) veya Flash (FLA) uygulaması için kullanıcı arabirimi.

RuntimeAssetsExample.as

Flash (FLA) uygulaması için belge sınıfı.

GeometricAssets.as

RuntimeAsset arabirimini uygulayan örnek bir sınıf.

GeometricAssets.fla

ActionScript için dışa aktarılan sembolleri içeren GeometricAssets sınıfına (FLA'nın belge sınıfı) bağlı bir FLA dosyası.

com/example/programmingas3/runtimeassetexplorer/RuntimeLibrary.as

Gezgin konteynerine yüklenecek tüm çalışma zamanı varlığı SWF dosyalarından beklenen zorunlu yöntemleri tanımlayan bir arabirim.

com/example/programmingas3/runtimeassetexplorer/AnimatingBox.as

Dönen bir kutu şeklinde kütüphane sembolünün sınıfı.

com/example/programmingas3/runtimeassetexplorer/AnimatingStar.as

Dönen bir yıldız şeklinde kütüphane sembolünün sınıfı.

Çalışma zamanı kütüphane arabirimi oluşturma

Gezginin düzgün şekilde SWF kütüphanesiyle etkileşim kurması için, çalışma zamanı varlığı kütüphanelerinin yapısının biçimlendirilmesi gerekir. Beklenen bir yapıyı ayıran yöntemlerin şeması olması yönüyle bir sınıfa benzeyen ancak sınıftan farklı olarak herhangi bir yöntem gövdesi içermeyen bir arabirim oluşturarak bunu gerçekleştireceğiz. Arabirim, hem çalışma zamanı kütüphanesinin hem de gezginin birbiriyle iletişim kurması için bir yol sağlar. Tarayıcımıza yüklenen çalışma zamanı varlıklarının her SWF dosyası bu arabirimi uygular. Arabirimler ve arabirimlerin nasıl kullanışlı olabileceği hakkında daha fazla bilgi için, ActionScript 3.0'ı Öğrenme 'deki Arabirimler'e bakın.

RuntimeLibrary arabirimi çok basit olacaktır—yalnızca içe aktarılacak olan ve çalışma zamanı kütüphanesinde kullanılabilir olan sembollerin sınıf yollarının bir dizisini gezgine sağlayabilecek bir işlev gerektirmekteyiz. Bu amaçla, arabirim tek bir yönteme sahiptir: getAssets() .

package com.example.programmingas3.runtimeassetexplorer 
{ 
    public interface RuntimeLibrary 
    { 
        function getAssets():Array; 
    } 
}

Varlık kütüphanesi SWF dosyası oluşturma

RuntimeLibrary arabirimi tanımlanarak, SWF dosyalarının başka bir SWF dosyasına yüklenebileceği birden çok varlık kütüphanesi oluşturulması mümkündür. Tek tek varlıkların SWF kütüphanesinin oluşturulması dört görev içerir:

  • Varlık kütüphanesi SWF dosyası için bir sınıf oluşturma

  • Kütüphanede bulunan tek tek varlıklar için sınıflar oluşturma

  • Gerçek grafik varlıkları oluşturma

  • Grafik öğelerini sınıflarla ilişkilendirme ve kütüphane SWF dosyasını yayınlama

RuntimeLibrary arabirimini uygulamak için bir sınıf oluşturma

Daha sonra, RuntimeLibrary arabirimini uygulayan bir GeometricAssets sınıfını oluşturacağız. Bu, FLA dosyasının belge sınıfı olacaktır. Bu sınıfın kodu, RuntimeLibrary arabirimine çok benzer—bunlar arasındaki tek fark, sınıf tanımında getAssets() yönteminin bir yöntem gövdesine sahip olmasıdır.

package 
{ 
    import flash.display.Sprite; 
    import com.example.programmingas3.runtimeassetexplorer.RuntimeLibrary; 
     
    public class GeometricAssets extends Sprite implements RuntimeLibrary  
    { 
        public function GeometricAssets() { 
             
        } 
        public function getAssets():Array { 
            return [ "com.example.programmingas3.runtimeassetexplorer.AnimatingBox", 
                     "com.example.programmingas3.runtimeassetexplorer.AnimatingStar" ];     
        } 
    } 
}

İkinci bir çalışma zamanı kütüphanesi oluşturacak olsaydık, kendi getAssets() uygulamasını sağlayan başka bir sınıfı (örneğin, AnimationAssets) esas alan başka bir FLA oluşturabilirdik.

Her MovieClip varlığı için sınıflar oluşturma

Bu örnek için, özel varlıklara herhangi bir işlevsellik eklemeden yalnızca MovieClip sınıfını genişleteceğiz. Aşağıdaki AnimatingStar kodu, AnimatingBox kodu ile paraleldir:

package com.example.programmingas3.runtimeassetexplorer 
{ 
    import flash.display.MovieClip; 
     
    public class AnimatingStar extends MovieClip 
    { 
        public function AnimatingStar() { 
        } 
    } 
}

Kütüphaneyi yayınlama

Şimdi yeni bir FLA oluşturup Özellik denetçisinin Belge Sınıfı alanına GeometricAssets öğesini girerek MovieClip tabanlı varlıkları yeni sınıfa bağlayacağız. Bu örneğin amaçları doğrultusunda, 360 kare üzerinden saat yönünde tek bir dönüş gerçekleştirmek için bir ara zaman çizelgesi kullanan iki çok temel şekil oluşturacağız. Hem animatingBox hem de animatingStar sembolleri, ActionScript için Dışa Aktar olarak ayarlanır ve Sınıf alanı, getAssets() uygulamasında belirtilen ilgili sınıf yollarına ayarlanmıştır. Standart MovieClip yöntemlerinin alt sınıfını oluşturmak istediğimizden, flash.display.MovieClip öğesinin varsayılan temel sınıfı kalır.

Sembolünüzün dışa aktarma ayarlarını yaptıktan sonra FLA'yı yayınlayın. Şimdi ilk çalışma zamanı kütüphanenize sahipsiniz. Bu SWF dosyası başka bir AVM2 SWF dosyasına yüklenebilir ve AnimatingBox ve AnimatingStar sembolleri, yeni SWF dosyası için kullanılabilir olur.

Kütüphaneyi başka bir SWF dosyasına yükleme

Uygulanacak son işlev, varlık gezgininin kullanıcı arabirimidir. Bu örnekte, çalışma zamanı kütüphanesinin yolu ASSETS_PATH adında bir değişken olarak kodlanmıştır. Alternatif olarak, örneğin, sabit sürücünüzde belirli bir SWF dosyasına gözatan bir arabirim oluşturmak için, FileReference sınıfını oluşturabilirsiniz.

Çalışma zamanı kütüphanesi başarıyla yüklendiğinde, Flash Player runtimeAssetsLoadComplete() yöntemini çağırır:

private function runtimeAssetsLoadComplete(event:Event):void 
{ 
    var rl:* = event.target.content; 
    var assetList:Array = rl.getAssets(); 
    populateDropdown(assetList); 
    stage.frameRate = 60; 
}

Bu yöntemde, rl değişkeni yüklenen SWF dosyasını temsil eder. Kod, yüklenen SWF dosyasının getAssets() yöntemini çağırarak kullanılabilir olan varlıkların listesini alır ve populateDropDown() yöntemini çağırarak bir ComboBox bileşenini kullanılabilir varlıkların bir listesiyle doldurmak için bunları kullanır. Daha sonra da bu yöntem her varlığın tam sınıf yolunu saklar. Kullanıcı arabiriminde Ekle düğmesi tıklatıldığında addAsset() yöntemi tetiklenir:

private function addAsset():void 
{ 
    var className:String = assetNameCbo.selectedItem.data; 
    var AssetClass:Class = getDefinitionByName(className) as Class; 
    var mc:MovieClip = new AssetClass(); 
    ... 
}

bu yöntem, ComboBox öğesinde geçerli olarak seçilmiş varlığın sınıf yolunu ( assetNameCbo.selectedItem.data ) alır ve o varlığın yeni bir örneğini oluşturmak üzere varlığın sınıfına gerçek bir başvuruyu almak için getDefinitionByName() işlevini (flash.utils paketinden) kullanır.