Ładowanie treściFlash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje Treść w środowiskach wykonawczych Flash Player i AIR może ładować inne treści różnego typu, między innymi:
Ładowanie plików SWF i obrazów za pomocą klasy LoaderKlasa Loader służy do ładowania plików SWF oraz obrazów (plików JPG, GIF lub PNG). Dowolny plik SWF inny niż ten znajdujący się w obszarze izolowanym lokalnym z systemem plików, może ładować pliki SWF z dowolnej domeny sieciowej. Tylko pliki SWF w lokalnych obszarach izolowanych mogą ładować pliki SWF oraz obrazy z lokalnego systemu plików. Pliki SWF w obszarze izolowanym lokalnym z siecią mogą ładować wyłącznie pliki SWF znajdujące się w obszarze izolowanym zaufanym lub lokalnym z siecią. Pliki SWF w obszarze izolowanym lokalnym z siecią mogą ładować wyłącznie treść lokalną inną niż pliki SWF (np. obrazy), nie mogą one jednak uzyskiwać dostępu do danych ładowanej treści. Przy ładowaniu pliku SWF z niezaufanego źródła (jak na przykład domena inna niż głównego pliku SWF obiektu Loader) przydatne jest definiowanie maski dla obiektu Loader, w celu uniemożliwienia pobierania przez ładowaną zawartość (podrzędną wobec obiektu Loader) na stół montażowy elementów niezgodnych z maską, tak jak przedstawia to poniższy kod: 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); Wywołując metodę load() obiektu Loader, można określić parametr context, którym należy uczynić obiekt LoaderContext. Klasa LoaderContext zawiera trzy właściwości, które umożliwiają zdefiniowanie kontekstu używania wczytanej zawartości.
Szczegółowe informacje zawiera sekcja Określanie kontekstu ładowania. Ważną właściwością obiektu Loader jest właściwość contentLoaderInfo, będąca obiektem LoaderInfo. Inaczej niż w przypadku większości obiektów, obiekt LoaderInfo jest współużytkowany przez ładujący plik SWF oraz ładowaną treść SWF; jest on zawsze dostępny dla obu części. Jeśli ładowana treść jest plikiem SWF, może ona uzyskać dostęp do obiektu LoaderInfo za pośrednictwem właściwości DisplayObject.loaderInfo. Obiekty LoaderInfo obejmują informacje takie jak postęp ładowania, adresy URL obiektu ładującego i ładowanego zaufane relacje między obiektem ładującym a ładowany oraz inne informacje. Więcej informacji zawiera sekcja Monitorowanie postępu ładowania. Ładowanie dźwięku i wideoWszystkie treści, poza tymi w obszarze izolowanym lokalnym z systemem plików, mogą ładować dźwięk i wideo z lokalizacji sieciowych za pośrednictwem metod Sound.load(), NetConnection.connect() i NetStream.play(). Tylko treści w obszarach izolowanych lokalnych z systemem plików i środowiska AIR mogą ładować multimedia z lokalnego systemu plików. Tylko treści w obszarze izolowanym lokalnym z systemem plików, obszarze izolowanym środowiska AIR lub lokalnym zaufanym obszarze izolowanym mogą mieć dostęp do danych w tych załadowanych plikach. Istnieją również inne ograniczenia dotyczące uzyskiwania dostępu do danych z ładowanych multimediów. Szczegółowe informacje zawiera sekcja Załadowane multimedia jako dane. Ładowanie plików SWF i obrazów za pomocą znaczników <img> w polu tekstowymMożliwe jest ładowanie plików SWF oraz bitmap do pola tekstowego za pomocą znacznika <img>, zgodnie z ilustracją w poniższym kodzie: <img src = 'filename.jpg' id = 'instanceName' > Możliwe jest uzyskiwanie dostępu do ładowanej w ten sposób treści za pomocą metody getImageReference() instancji TextField, zgodnie z poniższym kodem: var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');
Należy jednak zwrócić uwagę, że pliki SWF oraz obrazy ładowane w ten sposób są umieszczane w obszarze izolowanym odpowiadającym ich pochodzeniu. Podczas ładowania pliku obrazu za pomocą znacznika <img> w polu tekstowym dostęp do danych w obrazie może być dozwolony przez plik strategii URL. Możliwe jest poszukiwanie pliku strategii po dodaniu atrybutu checkPolicyFile do znacznika <img>, zgodnie z poniższym kodem: <img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' > Podczas ładowania SWF za pomocą znacznika <img> w polu tekstowym możliwe jest zezwolenie na dostęp do danych tego pliku SWF za pośrednictwem metody Security.allowDomain(). Użycie znacznika <img> w polu tekstowym do załadowania pliku zewnętrznego (w przeciwieństwie do użycia klasy Bitmap osadzonej w pliku SWF) powoduje, że automatycznie tworzony jest obiekt Loader jako element potomny obiektu TextField, a plik zewnętrzny jest ładowany to tego obiektu Loader zupełnie tak, jakby obiekt Loader został użyty w języku ActionScript do załadowania pliku. W takim przypadku metoda getImageReference() zwraca obiekt Loader, który został utworzony automatycznie. W celu uzyskania dostępu do tego obiektu Loader nie jest konieczna żadna kontrola zabezpieczeń, ponieważ znajduje się on w tym samym obszarze izolowanym zabezpieczeń, co kod wywołujący. W przypadku odwoływania się do właściwości content obiektu Loader w celu uzyskiwania dostępu do ładowanych multimediów mają zastosowanie reguły zabezpieczeń. Jeśli treść jest obrazem, konieczne jest zaimplementowanie pliku strategii URL, a jeśli treść jest plikiem SWF, to konieczne jest wywołanie za pośrednictwem kodu pliku SWF metody allowDomain(). Adobe AIRW obszarze izolowanym aplikacji znaczniki <img> w polu tekstowym są ignorowane, co ma na celu zapobieganie atakom phishingowym. Ponadto kod działający w obszarze izolowanym aplikacji nie ma uprawnień do wywoływania metody allowDomain() klasy Security. Zawartość dostarczana przy użyciu serwerów RTMPSerwer Flash Media Server udostępnia dane, audio i wideo za pośrednictwem protokołu RTMP (Real-Time Media Protocol) . Te dane multimedialne można załadować przy użyciu metody connect() klasy NetConnection, przekazując jako parametr adres URL serwera RTMP. Serwer Flash Media Server może zezwalać tylko na określone połączenia i blokować pobieranie zawartości na podstawie domeny pliku wysyłającego żądanie. Więcej szczegółów zawiera dokumentacja serwera Flash Media Server dostępna pod adresemwww.adobe.com/go/learn_fms_docs_pl. W celu wykorzystania metod BitmapData.draw() oraz SoundMixer.computeSpectrum() do wyodrębnienia wykonawczych danych graficznych i dźwiękowych ze strumieni RTMP należy przyznać dostęp do serwera. Aby przyznać dostęp do określonych katalogów na serwerze Flash Media Server, należy użyć właściwości Client.videoSampleAccess oraz Client.audioSampleAccess serwerowego języka ActionScript. Więcej informacji zawiera Skorowidz serwerowego języka ActionScript. |
|