İçerik yükleme

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

Flash Player ve AIR içeriği aşağıdakilerin de yer aldığı birçok türde başka içerik yükleyebilir:

  • SWF dosyaları

  • Görüntüler

  • Ses

  • Video

  • HTML dosyaları (yalnızca AIR)

  • JavaScript (yalnızca AIR)

SWF dosyalarını ve görüntülerini Yükleyici sınıfıyla yükleyin

SWF dosyalarını ve görüntüleri (JPG, GIF veya PNG dosyaları) yüklemek için Loader sınıfını kullanırsınız. Dosya sistemiyle yerel sanal alanda bulunanlar dışında herhangi bir SWF dosyası, herhangi bir ağ etki alanından SWF dosyalarını ve görüntülerini yükleyebilir. Yalnızca yerel sanal alanlardaki SWF dosyaları, yerel dosya sisteminden SWF dosyalarını ve görüntüleri yükleyebilir. Ancak, ağ iletişimiyle yerel sanal alandaki dosyalar yalnızca yerel güvenilen veya ağ iletişimiyle yerel sanal alanda bulunan yerel SWF dosyalarını yükleyebilir. Ne var ki, ağ iletişimiyle yerel sanal alanda bulunan SWF dosyaları, SWF dosyaları dışındaki yerel içerikleri (örn. görüntüler) yükler ancak yüklenen içerikteki verilere erişemez.

Güven onayı verilmeyen bir kaynaktan (örn. Loader nesnesinin kök SWF dosyasının etki alanı dışındaki bir etki alanından) SWF dosyası yüklerken, aşağıdaki kodda olduğu gibi, Loader nesnesi için bir maske tanımlayarak, yüklenen içeriğin (bu, Loader nesnesinin bir alt öğesidir), Sahne Alanı'nın o maske dışında kalan kısımlarına çizim yapmasını önlemek isteyebilirsiniz:

import flash.display.*; 
import flash.net.URLRequest; 
var rect:Shape = new Shape(); 
rect.graphics.beginFill(0xFFFFFF); 
rect.graphics.drawRect(0, 0, 100, 100); 
addChild(rect); 
var ldr:Loader = new Loader(); 
ldr.mask = rect; 
var url:String = "http://www.unknown.example.com/content.swf"; 
var urlReq:URLRequest = new URLRequest(url); 
ldr.load(urlReq); 
addChild(ldr);

Loader nesnesinin load() yöntemini çağırdığınızda, LoaderContext nesnesi olan bir context parametresini belirtebilirsiniz. LoaderContext sınıfı, yüklenen içeriğin kullanılabileceği bağlamı tanımlamanızı sağlayan üç özellik içerir:

  • checkPolicyFile: Yalnızca bir görüntü dosyası (SWF dosyası değil) yüklerken bu özelliği kullanın. Loader nesnesini içeren dosyanın etki alanı dışındaki bir etki alanında bulunan görüntü dosyası için bunu belirtin. Bu özelliği true değerine ayarlarsanız, Loader öğesi URL ilke dosyası için kaynak sunucuyu kontrol eder (bkz. Web sitesi denetimleri (ilke dosyaları)). Sunucu, Loader etki alanına izin verirse, Loader etki alanındaki SWF dosyalarında bulunan ActionScript, yüklenen görüntüdeki verilere erişebilir. Başka bir deyişle, yüklenen görüntüyü temsil eden Bitmap nesnesine başvuruyu almak için Loader.content özelliğini veya yüklenen görüntüdeki piksellere erişmek için BitmapData.draw() yöntemini kullanabilirsiniz.

  • securityDomain: Yalnızca bir SWF dosyası (görüntü değil) yüklerken bu özelliği kullanın. Loader nesnesini içeren dosyanın etki alanı dışındaki bir etki alanında bulunan SWF dosyası için bunu belirtin. Şu anda securityDomain özelliği için yalnızca iki değer desteklenir: null (varsayılan) ve SecurityDomain.currentDomain. SecurityDomain.currentDomain öğesini belirtirseniz, bu, yüklenen SWF dosyasının, yükleyen SWF dosyasının sanal alanına içe aktarılmasını ister, başka bir deyişle, yükleyen SWF dosyasının kendi sunucusundan yüklenmiş gibi çalışır. Yalnızca yüklenen SWF dosyasının sunucusunda bir URL ilke dosyası bulunduğunda ve böylece yükleyen SWF dosyasının etki alanının erişimine izin verildiğinde buna izin verilir. Gerekli ilke dosyası bulunursa, yükleyen ve yüklenen aynı sanal alanda bulunduğundan, yükleme başladıktan sonra serbestçe birbirinin komut dosyasını oluşturabilir. Sanal alan içe aktarmasının yerine daha çok normal bir yükleme gerçekleştirildiğini ve sonra da yüklenen SWF dosyasının Security.allowDomain() yöntemini çağırmasının sağlandığını unutmayın. Yüklenen SWF dosyası böylece kendi doğal sanal alanında bulunup kendi gerçek sunucusundaki kaynaklara erişebileceğinden, bu ikinci yöntemin kullanımı daha kolay olabilir.

  • applicationDomain: Yalnızca ActionScript 3.0'da yazılmış bir SWF dosyası (ActionScript 1.0 veya 2.0'da yazılmış bir görüntü ya da SWF dosyası değil) yüklenirken bu özelliği kullanın. Dosyayı yüklerken, varsayılan olarak dosyanın, yükleyen SWF dosyasının uygulama etki alanının alt öğesi olan yeni bir uygulama etki alanına yerleştirilmesi yerine belirli bir uygulama etki alanına yerleştirilmesini belirtebilirsiniz. Uygulama etki alanlarının, güvenlik etki alanlarının alt birimleri olduğunu ve bu nedenle de yalnızca yüklediğiniz SWF dosyası, kendi sunucunuzda bulunduğundan dolayı veya siz securityDomain özelliğini kullanarak dosyayı güvenlik etki alanınıza başarıyla içe aktardığınızdan dolayı kendi güvenlik etki alanınızdan geldiğinde, bir hedef uygulama etki alanı belirtebildiğinizi unutmayın. Bir uygulama etki alanı belirtirseniz ancak yüklenen SWF dosyası farklı bir güvenlik etki alanının parçasıysa, applicationDomain öğesinde belirttiğiniz etki alanı yoksayılır. Ayrıntılı bilgi için bkz. Uygulama etki alanlarıyla çalışma.

Ayrıntılar için, bkz. Yükleme içeriği belirtme.

Loader nesnesinin önemli bir özelliği, LoaderInfo nesnesi olan contentLoaderInfo özelliğidir. Diğer birçok nesnenin aksine LoaderInfo nesnesi, yükleyen SWF dosyası ile yüklenen içerik arasında paylaşılır ve her zaman iki taraf da nesneye erişebilir. Yüklenen içerik bir SWF dosyası olduğunda, DisplayObject.loaderInfo özelliği üzerinden LoaderInfo nesnesine erişebilir. LoaderInfo nesneleri, yükleme ilerlemesi, yükleyenin ve yüklenenin URL'leri, yükleyen ile yüklenen arasındaki güven onayı ilişkisi, vb. bilgileri içerir. Daha fazla bilgi için, bkz. Yükleme ilerlemesini izleme.

Ses ve video yükleme

Dosya sistemiyle yerel sanal alanda bulunanlar dışında tüm içerik, Sound.load(), NetConnection.connect() ve NetStream.play() yöntemlerini kullanarak ağ kaynaklarından ses ve video yüklemesine izin verilir.

Yalnızca dosya sistemiyle yerel ve AIR uygulaması sanal alanlarındaki içerik, yerel dosya sisteminden yerel medya yükleyebilir. Bu yüklenmiş dosyalara yalnızca dosya sistemiyle yerel sanal alanı ve AIR uygulama sanal alanı ya da yerel-güvenilir sanal alanı erişebilir.

Yüklenen ortamdaki verilere erişilmesine yönelik başka kısıtlamalar da vardır. Ayrıntılar için, bkz. Veri olarak yüklenen ortama erişme.

Metin alanında <img> etiketini kullanarak SWF dosyalarını ve görüntüleri yükleme

Aşağıdaki kodda olduğu gibi, <img> etiketini kullanarak bir metin alanına SWF dosyaları ve bitmapler yükleyebilirsiniz:

<img src = 'filename.jpg' id = 'instanceName' >

Aşağıdaki kodda olduğu gibi, TextField örneğinin getImageReference() yöntemini kullanarak bu şekilde yüklenen içeriğe erişebilirsiniz:

var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');

Ancak, bu şekilde yüklenen SWF dosyalarının ve görüntülerin, kaynaklarına karşılık gelen sanal alana yerleştirildiğini unutmayın.

Bir metin alanında <img> etiketini kullanarak görüntü dosyası eklediğinizde, görüntüdeki verilere erişilmesine, bir URL ilke dosyası tarafından izin verilir. Aşağıdaki kodda olduğu gibi, <img> etiketine bir checkPolicyFile niteliği ekleyerek ilke dosyasını kontrol edebilirsiniz:

<img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' >

Bir metin alanında <img> etiketini kullanarak SWF dosyası yüklediğinizde, Security.allowDomain() yöntemine yapılan bir çağrıyla, o SWF dosyasının verilerine erişilmesine izin verebilirsiniz.

Harici bir dosya yüklemek için (SWF dosyanızda gömülü bir Bitmap sınıfını kullanmanın aksine) bir metin alanında <img> etiketini kullandığınızda, TextField nesnesinin alt öğesi olarak otomatik şekilde bir Loader nesnesi oluşturulur ve dosya yüklemek için ActionScript'te bir Loader nesnesini kullanmışsınız gibi o Loader nesnesine harici dosya yüklenir. Bu durumda, getImageReference() yöntemi, otomatik olarak oluşturulan Loader nesnesini döndürür. Bu Loader nesnesi, çağıran kodla aynı güvenlik sanal alanında bulunduğundan, bu Loader nesnesine erişmek için güvenlik denetimi gerekmez.

Ancak, yüklenen ortama erişmek için Loader nesnesinin content özelliğine başvurduğunuzda güvenlik kuralları geçerli olur. İçerik bir görüntü olursa, bir URL ilke dosyası uygulamanız gerekir ve içerik bir SWF dosyası olursa SWF dosyasındaki kodun allowDomain() yöntemini çağırmasını sağlamanız gerekir.

Adobe AIR

Uygulama sanal alanında bir metin alanındaki <img> etiketleri, olta saldırılarını önlemek amacıyla göz ardı edilir. Ayrıca, uygulamanın sanal alanında yürütülen kod, Güvenlik allowDomain() yönteminin çağırılmasına izin vermez.

RTMP sunucuları kullanılarak teslim edilen içerik

Flash Media Server, veri, ses ve video sunmak için Real-Time Media Protocol (RTMP) kullanır. NetConnection sınıfının connect() yöntemini kullanıp bir RTMP URL’sini parametre olarak ileterek bu medyayı yükleyebilirsiniz. Flash Media Server, istekte bulunan dosyanın etki alanını esas alarak bağlantıları kısıtlayabilir ve içeriğin indirilmesini önleyebilir. Ayrıntılar için, çevrimiçi Flash Media Server belgelerine www.adobe.com/go/learn_fms_docs_tr adresinden bakın.

RTMP akışlarından çalışma zamanı grafikleri ve ses verileri elde etmek amacıyla BitmapData.draw() ve SoundMixer.computeSpectrum() yöntemlerini kullanmak için, sunucuya erişime izin vermek zorundasınız. Flash Media Server’daki belli dizinlere erişime izin vermek için Sunucu-Tarafı ActionScript Client.videoSampleAccess ve Client.audioSampleAccess özelliklerini kullanın. Daha fazla bilgi için bkz. Adobe® Flash® Professional CS5 için ActionScript® 3.0 Başvurusu.