Harici içerik

Uygulamanızı birden fazla SWF dosyasına bölün.

Mobil cihazların ağa sınırlı erişimi olabilir. İçeriğinizi hızlı yüklemek için, uygulamanızı birden fazla SWF dosyasına bölün. Uygulamanın tamamında kod mantığını ve varlıkları yeniden kullanmaya çalışın. Örneğin, aşağıdaki şemada gösterildiği gibi, birden fazla SWF dosyasına bölünmüş bir uygulama düşünün.

Birden çok SWF dosyasına bölünen uygulama

Bu örnekte, her SWF dosyası aynı bitmap için kendi kopyasını içerir. Aşağıdaki şemanın gösterdiği gibi, bu çoğaltılma bir çalışma zamanı paylaşımlı kütüphane kullanılarak önlenebilir.

Çalışma zamanı paylaşılan kütüphane kullanma

Bu teknik kullanılarak, bitmap’in diğer SWF dosyaları tarafından kullanılabilir hale getirilmesi için bir çalışma zamanı paylaşımlı kütüphane yüklenir. ApplicationDomain sınıfı yüklenen tüm sınıf tanımlarını saklar ve onları getDefinition() yöntemi üzerinden çalışma zamanında kullanılabilir hale getirir.

Ayrıca, bir çalışma zamanı paylaşımlı kütüphane kod mantığının tamamını içerebilir. Uygulamanın tamamı yeniden derlenmeden çalışma zamanında güncellenebilir. Aşağıdaki kod bir çalışma zamanı paylaşımlı kütüphane yükler ve çalışma zamanında SWF dosyasına dahil edilen tanımı çıkarır. Bu teknik fontlar, bitmap'ler, sesler veya herhangi bir ActionScript sınıfıyla kullanılabilir.

// Create a Loader object 
var loader:Loader = new Loader(); 
  
// Listen to the Event.COMPLETE event 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingComplete ); 
  
// Load the SWF file 
loader.load(new URLRequest("library.swf") ); 
var classDefinition:String = "Logo"; 
  
function loadingComplete(e:Event ):void 
{ 
    var objectLoaderInfo:LoaderInfo = LoaderInfo ( e.target ); 
     
    // Get a reference to the loaded SWF file application domain 
    var appDomain:ApplicationDomain = objectLoaderInfo.applicationDomain;     
  
    // Check whether the definition is available 
    if ( appDomain.hasDefinition(classDefinition) ) 
    {     
        // Extract definition 
        var importLogo:Class = Class ( appDomain.getDefinition(classDefinition) ); 
  
        // Instantiate logo 
        var instanceLogo:BitmapData = new importLogo(0,0); 
  
        // Add it to the display list 
        addChild ( new Bitmap ( instanceLogo ) ); 
    } else trace ("The class definition " +  classDefinition + " is not available."); 
}

Tanımın alınması yüklenen SWF dosyasının uygulama etki alanına sınıf tanımlarının yüklenmesiyle daha kolay hale getirilebilir.

// Create a Loader object 
var loader:Loader = new Loader(); 
  
// Listen to the Event.COMPLETE event 
loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, loadingComplete ); 
  
// Load the SWF file 
loader.load ( new URLRequest ("rsl.swf"), new LoaderContext ( false, ApplicationDomain.currentDomain) ); 
var classDefinition:String = "Logo"; 
  
function loadingComplete ( e:Event ):void 
{ 
    var objectLoaderInfo:LoaderInfo = LoaderInfo ( e.target ); 
     
    // Get a reference to the current SWF file application domain 
    var appDomain:ApplicationDomain = ApplicationDomain.currentDomain;     
  
    // Check whether the definition is available 
    if (appDomain.hasDefinition( classDefinition ) ) 
    {     
        // Extract definition 
        var importLogo:Class = Class ( appDomain.getDefinition(classDefinition) ); 
  
        // Instantiate it 
        var instanceLogo:BitmapData = new importLogo(0,0); 
  
        // Add it to the display list 
        addChild ( new Bitmap ( instanceLogo ) ); 
    } else trace ("The class definition " +  classDefinition + " is not available."); 
}

Yüklü SWF dosyasında mevcut olan sınıflar artık geçerli uygulama etki alanındaki getDefinition() yöntemi çağrılarak kullanılabilir. Ayrıca, sınıflara getDefinitionByName() yöntemini çağırarak da erişebilirsiniz. Bu teknik fontları ve büyük varlıkları yalnızca bir kere yükleyerek bant genişliğinden tasarruf sağlar. Varlıklar hiçbir zaman diğer SWF dosyalarına dışa aktarılmaz. Tek kısıtlama uygulamanın test edilmesinin ve loader.swf dosyası üzerinden çalıştırılmasının gerekliliğidir. Bu dosya önce varlıkları yükler, sonra da uygulamayı oluşturan farklı SWF dosyalarını yükler.