Film klibi örneği: RuntimeAssetsExplorerFlash 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:
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:
Çalışma zamanı kütüphane arabirimi oluşturmaGezginin 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şturmaRuntimeLibrary 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:
RuntimeLibrary arabirimini uygulamak için bir sınıf oluşturmaDaha 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şturmaBu ö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üklemeUygulanacak 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. |
|