Veri olarak yüklenen ortama erişme

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

Yüklü verilere erişmek için, BitmapData.draw() ve SoundMixer.computeSpectrum()yöntemlerini kullanın. Varsayılan olarak, farklı bir sanal alana yüklü medya tarafından görüntülenen veya oynatılan grafik veya ses nesnelerinden piksel verileri ya da ses verileri alamazsınız. Ancak, bu tip verilere sanal alan sınırları dahilinde erişim iznini vermek için aşağıdaki yöntemleri kullanabilirsiniz:

  • Erişilecek veriyi görüntüleyen veya oynatan içerikte, Security.allowDomain() yöntemini çağırarak diğer etki alanlarındaki içeriğe veri erişimi sağlayın.

  • Yüklenmiş bir görüntü, ses veya video için, yüklenen dosyanın sunucusuna bir URL ilke dosyası ekleyin. Bu ilke dosyasının, dosyadan verileri ayıklamak üzere BitmapData.draw() veya SoundMixer.computeSpectrum() yöntemlerini çağırmaya çalışan SWF dosyasının etki alanına erişim hakkı vermesi gerekir.

İlerleyen bölümlerde, bitmap, ses ve video verilerine erişilmesiyle ilgili ayrıntılar sağlanmıştır.

Bitmap verilerine erişme

BitmapData nesnesinin draw() yöntemi, herhangi bir görüntüleme nesnesinin geçerli olarak görüntülenen piksellerini BitmapData nesnesine çizmenize olanak sağlar. Bunlar arasında, MovieClip nesnesinin, Bitmap nesnesinin veya herhangi bir görüntüleme nesnesinin pikselleri yer alır. draw() yönteminin BitmapData nesnesine pikselleri çizmesi için şu koşulların karşılanması gerekir:

  • Yüklenen bitmap dışında bir kaynak nesne olması durumunda, kaynak nesnenin ve (Sprite veya MovieClip nesnesi olması durumunda) kaynak nesnenin tüm alt nesnelerinin, draw() yöntemini çağıran nesneyle aynı etki alanından gelmesi ya da Security.allowDomain() yönteminin çağrılmasıyla çağıran için erişilebilir olan bir SWF dosyasında bulunması gerekir.

  • Loaded bitmap kaynak nesnesi olması durumunda, kaynak nesnenin, draw() yöntemini çağıran nesneyle aynı etki alanından gelmesi veya kaynak sunucusunun, çağıran etki alana izin veren bir URL ilke dosyası içermesi gerekir.

Bu koşullar karşılanmazsa, SecurityError istisnası atılır.

Loader sınıfının load() yöntemini çağırdığınızda, LoaderContext nesnesi olan bir context parametresini belirtebilirsiniz. LoaderContext nesnesinin checkPolicyFile özelliğini true değerine ayarlarsanız, Flash Player uygulaması, görüntünün yükleneceği sunucuda bir URL ilke dosyasını kontrol eder. İlke dosyası varsa ve dosya, yükleyen SWF dosyasının etki alanına izin veriyorsa, dosyanın Bitmap nesnesindeki verilere erişmesine izin verilir; aksi takdirde erişim reddedilir.

Bir metin alanında <img> etiketi aracılığıyla yüklenmiş bir görüntüde checkPolicyFile özelliğini de belirtebilirsiniz. Ayrıntılar için, bkz. Metin alanında <img> etiketini kullanarak SWF dosyalarını ve görüntüleri yükleme.

Ses verilerine erişme

Aşağıdaki sesle ilgili ActionScript 3.0 API'leri güvenlik kısıtlamalarına sahiptir:

  • SoundMixer.computeSpectrum() yöntemi—Ses dosyasıyla aynı güvenlik sanal alanında çalışan kod için her zaman izin verilir. Diğer sanal alanlardaki kodlar için güvenlik kontrolleri vardır.

  • SoundMixer.stopAll() yöntemi—Ses dosyasıyla aynı güvenlik sanal alanında çalışan kod için her zaman izin verilir. Diğer sanal alanlardaki dosyalar için güvenlik kontrolleri vardır.

  • Sound sınıfının id3 özelliği—Ses dosyasıyla aynı güvenlik sanal alanında bulunan SWF dosyaları için her zaman izin verilir. Diğer sanal alanlardaki kodlar için güvenlik kontrolleri vardır.

Her ses, kendisiyle ilişkilendirilmiş iki tür sanal alana sahiptir—içerik sanal alanı ve sahip sanal alanı:

  • Sesin kaynak etki alanı, içerik sanal alanını belirler ve bu da sesin id3 özelliği ve SoundMixer.computeSpectrum() yöntemi aracılığıyla sesteki verilerin ayıklanıp ayıklanamayacağını belirler.

  • Ses çalınmasını başlatan nesne, sahip sanal alanını belirler ve bu da SoundMixer.stopAll() yöntemi kullanılarak sesin durdurulup durdurulamayacağını belirler.

Sound sınıfının load() yöntemini kullanarak ses yüklediğinizde, SoundLoaderContext nesnesi olan bir context parametresini belirtebilirsiniz. SoundLoaderContext nesnesinin checkPolicyFile özelliğini true değerine ayarlarsanız, çalışma zamanı sesin yüklendiği sunucuda URL ilke dosyasını kontrol eder. İlke dosyası varsa ve dosya, yükleyen kodun etki alanına izin veriyorsa, kodun, Sound nesnesinin id özelliğine erişmesine izin verilir; aksi takdirde erişim reddedilir. Ayrıca, checkPolicyFile özelliğinin ayarlanması, yüklenen sesler için SoundMixer.computeSpectrum() yöntemini etkinleştirebilir.

Bir veya birkaç ses sahibinin, sanal alanı çağıran için erişilemez durumda olması nedeniyle SoundMixer.stopAll() yöntemine yapılan bir çağrının tüm sesleri durdurup durdurmayacağını öğrenmek için SoundMixer.areSoundsInaccessible() yöntemini kullanabilirsiniz.

SoundMixer.stopAll() yönteminin çağrılması, sahip sanal alanı, stopAll() yöntemini çağıranın sanal alanıyla aynı olan sesleri durdurur. Bu ayrıca stopAll() yöntemini çağıran SWF dosyasının etki alanına erişim izni vermek için Security.allowDomain() yöntemini çağıran SWF dosyaları tarafından oynatımı başlatılan sesleri de durdurur. Diğer sesler durdurulmaz ve SoundMixer.areSoundsInaccessible() yöntemi çağrılarak bu seslerin varlığı ortaya çıkarılabilir.

computeSpectrum() yönteminin çağrılması için, çalınan her sesin, yöntemi çağıran nesneyle aynı sanal alanda veya çağıranın sanal alanına erişim izni verilmiş bir kaynakta olması gerekir; aksi takdirde SecurityError istisnası atılır. Bir SWF dosyasındaki kütüphanede bulunan gömülü seslerden yüklenmiş sesler için, yüklenen SWF dosyasında Security.allowDomain() yöntemine yapılan bir çağrıyla izin verilir. SWF dosyaları dışındaki kaynaklardan yüklenmiş (yüklenmiş mp3 dosyalarından veya video dosyalarından gelen) sesler için, kaynak sunucudaki bir URL ilke dosyası, yüklenen ortamdaki verilere erişim izni verir.

Daha fazla bilgi için bkz. Yazar (geliştirici) denetimleri ve Web sitesi denetimleri (ilke dosyaları).

Ses verilerine RTMP akışlarından erişmek için, sunucuya erişime izin vermelisiniz. Flash Media Server’daki belli dizinlere erişime izin vermek için Sunucu-Tarafı ActionScript Client.audioSampleAccess özelliğini kullanın. Daha fazla bilgi için bkz. Adobe® Flash® Professional CS5 için ActionScript® 3.0 Başvurusu.

Video verilerine erişme

Geçerli video karesinin piksel verilerini yakalamak için BitmapData.draw() yöntemini kullanabilirsiniz.

İki farklı video türü vardır:

  • Flash Media Server’dan RTMP üzerinden akan video

  • Bir FLV veya F4V dosyasından yüklenen aşamalı video

RTMP akışlarından çalışma zamanı grafiklerini almak amacıyla BitmapData.draw() yöntemini kullanmak için, sunucuya erişim izni vermelisiniz. Flash Media Server’daki belli dizinlere erişime izin vermek için Sunucu-Tarafı ActionScript Client.audioSampleAccess özelliğini kullanın. Daha fazla bilgi için bkz. Adobe® Flash® Professional CS5 için ActionScript® 3.0 Başvurusu.

source parametresi olarak aşamalı video ile BitmapData.draw() yöntemini çağırdığınızda, BitmapData.draw() öğesini çağıranın FLV dosyasıyla aynı sanal alanda olması veya FLV dosyasının sunucusunun, çağıran SWF dosyasının etki alanına izin veren bir ilke dosyasına sahip olması gerekir. NetStream nesnesinin checkPolicyFile özelliğini true değerine ayarlayarak ilke dosyasının indirilmesini isteyebilirsiniz.