Pakiet | flash.display |
Klasa | public class Loader |
Dziedziczenie | Loader DisplayObjectContainer InteractiveObject DisplayObject EventDispatcher Object |
Podklasy | AVLoader, FlexLoader |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
. Ładowany obiekt wyświetlany jest dodawany jako element podrzędny obiektu Loader.
W celu wczytania tekstu lub danych binarnych należy zastosować klasę URLLoader.
Klasa Loader nadpisuje poniższe odziedziczone metody, ponieważ obiekt Loader może posiadać tylko jeden podrzędny obiekt wyświetlany—ten, który ładuje. Wywoływanie następujących metod powoduje zgłoszenie wyjątku: addChild()
, addChildAt()
, removeChild()
, removeChildAt()
oraz setChildIndex()
. W celu usunięcia załadowanego obiektu wyświetlanego konieczne jest usunięcie obiektu Loader z tablicy podrzędnych obiektów obiektu DisplayObjectContainer.
Uwagi dotyczące systemu iOS
Aplikacja AIR działająca w systemie iOS może wczytywać pliki SWF zawierające kod ActionScript tylko z pakietu aplikacji. To ograniczenie obowiązuje dla każdego kodu ActionScript, również dla zasobów z nazwami klas wyeksportowanymi do kodu ActionScript. Aby wczytać jakikolwiek plik SWF, należy to zrobić przy użyciu tej samej domeny aplikacji, której użyto dla macierzystego pliku SWF. Przykład:
var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("swfs/SecondarySwf.swf"); var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); loader.load(url, loaderContext);
W systemie iOS nie można też wczytać pliku SWF zawierającego jakikolwiek kod bajtowy ActionScript, a następnie usunąć go i wczytać ponownie. Próba wykonania takiej operacji powoduje wygenerowanie przez środowisko wykonawcze błędu 3764.
W wersjach środowiska AIR starszych niż 3.6 można wczytywać tylko pliki SWF niezawierające kodu bajtowego ActionScript — niezależnie od tego, czy wczytywanie odbywa się z pakietu aplikacji, czy przez sieć. Zamiast używać zewnętrznego pliku SWF z kodem ActionScript, można utworzyć bibliotekę SWC i połączyć ją z głównym plikiem SWF.
Środowisko AIR w wersji 3.7 lub wyższej obsługuje wczytywanie przechowywanych zewnętrznie pomocniczych plików SWF. Szczegółowy opis tej funkcji można znaleźć tutaj.
Te ograniczenia występujące w systemie iOS nie dotyczą aplikacji uruchamianych w symulatorze systemu iOS (z parametrem ipa-test-interpreter-simulator lub ipa-debug-interpreter-simulator) ani w trybie interpretera (z parametrem ipa-test-interpreter lub ipa-debug-interpreter).
Zabezpieczenia modułu wczytującego
Korzystając z klasy Loader, należy wziąć pod uwagę model zabezpieczeń programu Flash Player i środowiska AIR:
- Możliwe jest ładowanie zawartości z dowolnego dostępnego źródła.
- Ładowanie nie jest dozwolone, gdy wywołujący plik SWF znajduje się w sieciowym obszarze izolowanym, a plik do załadowania jest plikiem lokalnym.
- W przypadku gdy ładowaną treścią jest plik SWF napisany z wykorzystaniem języka ActionScript 3.0, na pliku takim nie mogą być wykonywane operacje skryptowe inicjowane przez plik SWF znajdujący się w innym obszarze izolowanym, chyba że taka operacja została zatwierdzona przez wywołanie metody
System.allowDomain()
lubSystem.allowInsecureDomain()
w ładowanym pliku treści. - Jeżeli ładowana zawartość jest plikiem SWF AVM1 (napisanym w języku ActionScript 1.0 lub 2.0), wówczas nie może być na krzyżowo przez plik SWF AVM2 (napisany przy pomocy skryptu Action Script 3.0). Możliwa jest jednak komunikacja między dwoma plikami SWF poprzez wykorzystanie klasy LocalConneciton.
- Jeżeli ładowaną zawartością jest obraz, wówczas do jego danych nie ma dostępu plik SWF poza obszarem izolowanym, chyba że domena tego pliku SWF została załączona w pliku reguł URL na domenie źródłowej obrazu.
- Klipy filmowe w obszarze izolowanym „lokalnym z systemem plików” nie mogą wykonywać operacji skryptowych na klipach, które znajdują się w obszarze izolowanym „lokalnym z siecią”; niedozwolona jest także jest też sytuacja odwrotna.
- Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
Jednak w aplikacji AIR zawartość obszaru izolowanego application
(zawartość instalowana razem z aplikacją AIR) nie jest ograniczana przez te reguły zabezpieczeń.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
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); rect.graphics.endFill(); 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);
Uwaga: począwszy od systemu iOS9 firma Apple wprowadziła usługę App Transport Security, która uniemożliwia nawiązywanie niezabezpieczonych połączeń między aplikacją a usługami sieciowymi. W związku z tą zmianą wszystkie połączenia z niezabezpieczonymi stronami internetowymi, takimi jak Loader czy URLLoarder, przestaną działać z powodu wdrożenia usługi App Transport Security. Należy określić wyjątki od zachowania domyślnego, dodając klucze do pliku Info.plist w aplikacji.
W tym celu należy całkiem wyłączyć funkcję i dodać do pliku Info.plist poniższe ciągi, dzięki czemu aplikacja będzie działać, jak wcześniej.
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key><true/> </dict>
Należy określić wyjątki od zachowania domyślnego, dodając klucze do znacznika InfoAdditions deskryptora w swojej aplikacji.
<iPhone> <InfoAdditions> <![CDATA[ <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>www.example.com</key> <dict> <!--Include to allow subdomains--> <key>NSIncludesSubdomains</key> <true/> <!--Include to allow HTTP requests--> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> <!--Include to specify minimum TLS version--> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.1</string> </dict> </dict> </dict> ]]> </InfoAdditions> </iPhone>
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
Bieżąca implementacja dostępności (AccessibilityImplementation) dla tego wystąpienia klasy InteractiveObject. | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
Bieżące opcje dostępności tego obiektu wyświetlanego. | DisplayObject | ||
alpha : Number
Wartość przezroczystości alfa określonego obiektu. | DisplayObject | ||
blendMode : String
Wartość z klasy BlendMode określająca, jakiego trybu mieszania należy użyć. | DisplayObject | ||
blendShader : Shader [tylko do zapisu]
Ustawia moduł cieniujący, który jest używany do mieszania pierwszego planu oraz tła. | DisplayObject | ||
cacheAsBitmap : Boolean
Jeśli ustawiono wartość true, środowisko wykonawcze Flash buforuje wewnętrzną reprezentację bitmapy obiektu wyświetlanego. | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
W przypadku wartości innej niż null ten obiekt Matrix definiuje sposób renderowania obiektu wyświetlanego, gdy cacheAsBitmap jest ustawione na true. | DisplayObject | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
content : DisplayObject [tylko do odczytu]
Zawiera główny obiekt graficzny pliku SWF lub obraz (JPG, PNG lub GIF), który wczytano za pomocą metody load() lub loadBytes(). | Loader | ||
contentLoaderInfo : LoaderInfo [tylko do odczytu]
Zwraca obiekt LoaderInfo odpowiadający aktualnie ładowanemu obiektowi. | Loader | ||
contextMenu : NativeMenu
Określa menu kontekstowe tego obiektu. | InteractiveObject | ||
doubleClickEnabled : Boolean
Określa, czy ten obiekt reaguje na zdarzenia doubleClick (dwukrotne kliknięcia). | InteractiveObject | ||
filters : Array
Indeksowana tablica zawierająca wszystkie filtry aktualnie skojarzone z obiektem wyświetlanym. | DisplayObject | ||
focusRect : Object
Określa, czy z tym obiektem skojarzono ramkę aktywności. | InteractiveObject | ||
height : Number
Wysokość obiektu ekranowego w pikselach. | DisplayObject | ||
loaderInfo : LoaderInfo [tylko do odczytu]
Zwraca obiekt LoaderInfo zawierający informacje o ładowaniu pliku, do którego należy ten obiekt wyświetlany. | DisplayObject | ||
mask : DisplayObject
Wywoływany obiekt wyświetlany jest maskowany przez określony obiekt maski. | DisplayObject | ||
metaData : Object
Pobiera obiekt metadanych wystąpienia klasy DisplayObject, jeśli metadane są przechowywane razem z tym wystąpieniem klasy DisplayObject w pliku SWF, korzystając ze znacznika PlaceObject4. | DisplayObject | ||
mouseChildren : Boolean
Określa, czy elementy potomne obiektu obsługują mysz lub inne urządzenie wejściowe użytkownika. | DisplayObjectContainer | ||
mouseEnabled : Boolean
Określa, czy ten obiekt odbiera komunikaty z myszy lub innego urządzenia wejściowego użytkownika. | InteractiveObject | ||
mouseX : Number [tylko do odczytu]
Określa współrzędną x myszy lub urządzenia wejściowego użytkownika w pikselach. | DisplayObject | ||
mouseY : Number [tylko do odczytu]
Określa współrzędną y myszy lub urządzenia wejściowego użytkownika w pikselach. | DisplayObject | ||
name : String
Nazwa instancji obiektu DisplayObject. | DisplayObject | ||
needsSoftKeyboard : Boolean
Określa, czy klawiatura wirtualna (klawiatura programowa wyświetlana na ekranie) powinna być wyświetlana, gdy to wystąpienie klasy InteractiveObject staje się aktywne. | InteractiveObject | ||
numChildren : int [tylko do odczytu]
Zwraca liczbę elementów potomnych tego obiektu. | DisplayObjectContainer | ||
opaqueBackground : Object
Określa, czy przy konkretnym kolorze tła obiekt wyświetlany jest nieprzejrzysty. | DisplayObject | ||
parent : DisplayObjectContainer [tylko do odczytu]
Odnosi się do obiektu DisplayObjectContainer, który zawiera obiekt wyświetlany. | DisplayObject | ||
root : DisplayObject [tylko do odczytu]
Dla obiektu wyświetlanego w załadowanym pliku SWF główną właściwość stanowi obiekt wyświetlany na samym szczycie na liście wyświetlania w postaci struktury drzewa, którą reprezentuje plik SWF. | DisplayObject | ||
rotation : Number
Określa wielkość obrotu instancji obiektu DisplayObject (w kątach). | DisplayObject | ||
rotationX : Number
Wskazuje kąt obrotu (w stopniach) instancji DisplayObject wokół osi x — od pozycji początkowej względem nadrzędnego kontenera 3D. | DisplayObject | ||
rotationY : Number
Wskazuje kąt obrotu (w stopniach) instancji DisplayObject wokół osi y — od pozycji początkowej względem nadrzędnego kontenera 3D. | DisplayObject | ||
rotationZ : Number
Wskazuje kąt obrotu (w stopniach) instancji DisplayObject wokół osi z — od pozycji początkowej względem nadrzędnego kontenera 3D. | DisplayObject | ||
scale9Grid : Rectangle
Aktualnie stosowana siatka skalowania. | DisplayObject | ||
scaleX : Number
Wskazuje skalę poziomą (procent) obiektu względem punktu odniesienia. | DisplayObject | ||
scaleY : Number
Wskazuje skalę pionową (procent) obiektu względem punktu odniesienia. | DisplayObject | ||
scaleZ : Number
Wskazuje skalę głębokości (procent) obiektu względem punktu odniesienia. | DisplayObject | ||
scrollRect : Rectangle
Granice obszaru przewijania obiektu wyświetlanego. | DisplayObject | ||
softKeyboard : String
Steruje wyglądem klawiatury programowej. | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
Definiuje obszar, który powinien pozostać na ekranie po wyświetleniu klawiatury programowej (niedostępna w systemie iOS). | InteractiveObject | ||
stage : Stage [tylko do odczytu]
Stół montażowy obiektu wyświetlanego. | DisplayObject | ||
tabChildren : Boolean
Określa, czy elementy potomne tego obiektu mają reagować na klawisz Tab. | DisplayObjectContainer | ||
tabEnabled : Boolean
Określa, czy do tego obiektu można przejść za pomocą klawisza Tab. | InteractiveObject | ||
tabIndex : int
Określa kolejność uaktywniania obiektów (z pliku SWF) za pomocą klawisza Tab. | InteractiveObject | ||
textSnapshot : flash.text:TextSnapshot [tylko do odczytu]
Zwraca obiekt TextSnapshot dla tego wystąpienia klasy DisplayObjectContainer. | DisplayObjectContainer | ||
transform : flash.geom:Transform
Obiekt z właściwościami dotyczącymi matrycy obiektu wyświetlanego, transformacji kolorów oraz granic pikseli. | DisplayObject | ||
uncaughtErrorEvents : UncaughtErrorEvents [tylko do odczytu]
Obiekt, który wywołuje zdarzenie uncaughtError, gdy wystąpi nieobsłużony błąd w pliku SWF załadowanym przez ten obiekt Loader. | Loader | ||
visible : Boolean
Decyduje, czy obiekt wyświetlany jest widoczny, czy nie. | DisplayObject | ||
width : Number
Szerokość obiektu ekranowego w pikselach. | DisplayObject | ||
x : Number
Oznacza współrzędną x instancji obiektu DisplayObject w lokalnym układzie współrzędnych nadrzędnego obiektu DisplayObjectContainer. | DisplayObject | ||
y : Number
Oznacza współrzędną y instancji obiektu DisplayObject w lokalnym układzie współrzędnych nadrzędnego obiektu DisplayObjectContainer. | DisplayObject | ||
z : Number
Wskazuje współrzędną wzdłuż osi Z instancji DisplayObject względem nadrzędnego kontenera 3D. | DisplayObject |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Loader()
Tworzy obiekt Loader, który umożliwia ładowanie plików w formatach SWF, JPEG, GIF i PNG. | Loader | ||
Dodaje potomne wystąpienie klasy DisplayObject do tego wystąpienia klasy DisplayObjectContainer. | DisplayObjectContainer | ||
Dodaje potomne wystąpienie klasy DisplayObject do tego wystąpienia klasy DisplayObjectContainer. | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Rejestruje obiekt detektora zdarzeń w obiekcie EventDispatcher, dzięki czemu detektor będzie otrzymywał powiadomienia o zdarzeniu. | EventDispatcher | ||
Wskazuje, czy ograniczenia ze względów bezpieczeństwa będą powodowały pomijanie obiektów wyświetlanych na liście uzyskanej poprzez wywołanie metody DisplayObjectContainer.getObjectsUnderPoint() z określonym punktem. | DisplayObjectContainer | ||
Anuluje realizację bieżącej metody load(), czyli metody uaktywnionej aktualnie przez obiekt Loader. | Loader | ||
Decyduje o tym, czy określony obiekt ekranowy jest potomkiem instancji obiektu DisplayObjectContainer, czy też sam jest taką instancją. | DisplayObjectContainer | ||
Wywołuje zdarzenie, tj. kieruje je do przepływu zdarzeń. | EventDispatcher | ||
Zwraca prostokąt definiujący obszar obiektu wyświetlanego (w układzie współrzędnych obiektu targetCoordinateSpace). | DisplayObject | ||
Zwraca instancję podrzędnego obiektu wyświetlanego o podanym indeksie. | DisplayObjectContainer | ||
Zwraca instancję podrzędnego obiektu wyświetlanego o podanej nazwie. | DisplayObjectContainer | ||
Zwraca indeks podrzędnej instancji DisplayObject. | DisplayObjectContainer | ||
Zwraca tablicę obiektów, które leżą poniżej określonego punktu i są obiektami podrzędnymi tej instancji obiektu DisplayObjectContainer. | DisplayObjectContainer | ||
Zwraca prostokąt definiujący granice obiektu wyświetlanego w układzie współrzędnych określonych przez parametr targetCoordinateSpace (z wyłączeniem konturów kształtów). | DisplayObject | ||
Konwertuje obiekt punktowy ze współrzędnych obiektu Stage (globalne) do współrzędnych obiektu wyświetlanego (lokalne). | DisplayObject | ||
Konwertuje punkt dwuwymiarowy ze współrzędnych stołu wymiarowego (globalnych) na współrzędne trójwymiarowego obiektu wyświetlanego (lokalne). | DisplayObject | ||
Sprawdza, czy obiekt EventDispatcher zawiera jakiekolwiek detektory zarejestrowane dla konkretnego typu zdarzeń. | EventDispatcher | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Wyznacza prostokąt ograniczający obiekt wyświetlany w celu sprawdzenia, czy zachodzi on lub przecina się z prostokątem ograniczającym obiektu wyświetlanego obj. | DisplayObject | ||
Analizuje obiekt wyświetlany w celu ustalenia czy nakłada się on lub przecina punkt określony przez parametry x i y. | DisplayObject | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Ładuje plik SWF, JPEG, stopniowy JPG, nieanimowany GIF lub plik PNG do obiektu podrzędnego tego obiektu Loader. | Loader | ||
Wczytuje dane binarne przechowywane w obiekcie ByteArray. | Loader | ||
Wczytuje wystąpienie interfejsu obiektu. | Loader | ||
Konwertuje punkt trójwymiarowy trójwymiarowego obiektu wyświetlanego (lokalnego) na punkt dwuwymiarowy we współrzędnych stołu montażowego (globalnych). | DisplayObject | ||
Konwertuje obiekt punktowy ze współrzędnych obiektu wyświetlanego (lokalne) do współrzędnych obiektu Stage (globalne). | DisplayObject | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Usuwa określoną instancję obiektu podrzędnego DisplayObject z listy obiektów podrzędnych instancji DisplayObjectContainer. | DisplayObjectContainer | ||
Usuwa obiekt potomny DisplayObject o podanym indeksie z listy elementów potomnych obiektu DisplayObjectContainer. | DisplayObjectContainer | ||
Powoduje usunięcie wszystkich wystąpień potomnych klasy DisplayObject z listy obiektów potomnych wystąpień klasy DisplayObjectContainer. | DisplayObjectContainer | ||
Usuwa detektor z obiektu EventDispatcher. | EventDispatcher | ||
Powoduje uniesienie klawiatury wirtualnej. | InteractiveObject | ||
Zmienia położenie istniejącego elementu potomnego w kontenerze obiektów ekranowych. | DisplayObjectContainer | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Rekurencyjnie zatrzymuje wykonywanie osi czasu wszystkich obiektów MovieClip, dla których ten obiekt jest obiektem głównym. | DisplayObjectContainer | ||
Zamienia kolejność dwóch określonych obiektów podrzędnych. | DisplayObjectContainer | ||
Zamienia miejscami na liście dwa różne obiekty potomne o podanych indeksach. | DisplayObjectContainer | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca ciąg reprezentujący określony obiekt. | Object | ||
Usuwa obiekt podrzędny tego obiektu Loader, który został wczytany za pomocą metody load(). | Loader | ||
Podejmuje próbę usunięcia załadowanej zawartości pochodnego pliku SWF oraz zatrzymuje wykonywanie poleceń z ładowanych plików SWF. | Loader | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Sprawdza, czy detektor zdarzeń określonego typu jest zarejestrowany w tym obiekcie EventDispatcher lub jego elementach macierzystych. | EventDispatcher |
content | właściwość |
content:DisplayObject
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zawiera główny obiekt wyświetlany pliku SWF lub plik obrazu (JPG, PNG lub GIF), który został załadowany przy pomocy metod load()
lub loadBytes()
.
Implementacja
public function get content():DisplayObject
Zgłasza
SecurityError — Załadowany plik SWF lub plik obrazu należy do obszaru izolowanego, do którego użytkownik nie ma dostępu. W przypadku załadowanego pliku SWF można tego uniknąć poprzez wywołanie metody Security.allowDomain() przez plik lub poprzez określenie przez plik parametru loaderContext właściwości securityDomain ustawionym na wartość SecurityDomain.currentDomain w momencie wywołania metod load() lub loadBytes() .
|
Powiązane elementy interfejsu API
contentLoaderInfo | właściwość |
contentLoaderInfo:LoaderInfo
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zwraca obiekt LoaderInfo odpowiadający aktualnie ładowanemu obiektowi. Obiekty LoaderInfo są dzielone pomiędzy obiektem Loader a obiektem załadowanej zawartości. Obiekt LoaderInfo dostarcza informację postępu ładowania oraz statystyki ładowanego pliku.
Zdarzenia związane z ładowaniem są wywoływane przez obiekt LoaderInfo, odwoływany przez właściwość contentLoaderInfo
obiektu Loader. Właściwość contentLoaderInfo
jest ustawiona na prawidłowy obiekt LoaderInfo jeszcze przed ładowaniem zawartości, co pozwala na dodanie detektorów zdarzeń do obiektu przed ładowaniem.
Do wykrywania nieprzechwyconych błędów wywołanych w załadowanym pliku SWF należy używać właściwości Loader.uncaughtErrorEvents
, a nie właściwości Loader.contentLoaderInfo.uncaughtErrorEvents
.
Implementacja
public function get contentLoaderInfo():LoaderInfo
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
var url:String = "http://www.helpexamples.com/flash/images/image2.jpg"; var urlRequest:URLRequest = new URLRequest(url); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete); loader.load(urlRequest); addChild(loader); function loader_complete(evt:Event):void { var target_mc:Loader = evt.currentTarget.loader as Loader; target_mc.x = (stage.stageWidth - target_mc.width) / 2; target_mc.y = (stage.stageHeight - target_mc.height) / 2; }
uncaughtErrorEvents | właściwość |
uncaughtErrorEvents:UncaughtErrorEvents
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10.1, AIR 2 |
Obiekt, który wywołuje zdarzenie uncaughtError
, gdy wystąpi nieobsłużony błąd w pliku SWF załadowanym przez ten obiekt Loader. Sytuacja taka ma miejsce, gdy błąd zostanie wywołany poza blokiem try..catch
lub gdy zostanie wywołany obiekt zdarzenia ErrorEvent, dla którego nie zarejestrowano żadnych detektorów.
Należy pamiętać, że właściwość uncaughtErrorEvents
obiektu Loader wywołuje zdarzenia, które są przez nią propagowane. Nie wywołuje zdarzeń bezpośrednio. W szczególności nigdy nie wywołuje zdarzenia uncaughtErrorEvent
w fazie celu. Wywołuje to zdarzenie wyłącznie w fazach przechwytywania i propagacji. Aby wykryć nieprzechwycony błąd w bieżącym pliku SWF (pliku SWF, w którym jest zdefiniowany obiekt Loader), należy skorzystać właściwości LoaderInfo.uncaughtErrorEvents
.
Jeśli treść ładowana przez obiekt Loader jest plikiem SWF AVM1 (ActionScript 2), wówczas nieprzechwycone błędy w pliku SWF AVM1 nie powodują zdarzenia uncaughtError
.
Implementacja
public function get uncaughtErrorEvents():UncaughtErrorEvents
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
uncaughtError
służący do wykrywania nieprzechwyconych błędów.
W konstruktorze tworzony jest obiekt Loader i rejestrowany detektor zdarzeń uncaughtError
wywoływanych przez właściwość uncaughtErrorEvents
obiektu Loader.
W metodzie uncaughtErrorHandler()
sprawdzany jest typ danych właściwości error
i podejmowane jest odpowiednie działanie.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.ErrorEvent; import flash.events.UncaughtErrorEvent; import flash.net.URLRequest; public class LoaderUncaughtErrorEventExample extends Sprite { private var ldr:Loader; public function LoaderUncaughtErrorEventExample() { ldr = new Loader(); ldr.load(new URLRequest("child.swf")); ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); } private function uncaughtErrorHandler(event:UncaughtErrorEvent):void { if (event.error is Error) { var error:Error = event.error as Error; // do something with the error } else if (event.error is ErrorEvent) { var errorEvent:ErrorEvent = event.error as ErrorEvent; // do something with the error } else { // a non-Error, non-ErrorEvent type was thrown and uncaught } } } }
Loader | () | Konstruktor |
public function Loader()
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy obiekt Loader, który umożliwia ładowanie plików w formatach SWF, JPEG, GIF i PNG. Należy wywołać metodę load()
w celu załadowania zasobu jako element podrzędny instancji Loader. Możliwe jest dodanie obiektu Loader do listy wyświetlania (na przykład przez zastosowanie metody addChild()
instancji DisplayObjectContainer). Zasób pojawia się na obiekcie Stage w trakcie ładowania.
Możliwe jest również zastosowanie instancji klasy Loader „spoza listy”, bez dodawania jej do kontenera obiektów wyświetlanych na liście wyświetlania. W tym trybie instancja Loader może być wykorzystywana do ładowania pliku SWF zawierającego dodatkowe moduły aplikacji.
W celu wykrycia momentu zakończenia ładowania pliku SWF, możliwe jest wykorzystanie zdarzeń obiektu LoaderInfo skojarzonego z właściwością contentLoaderInfo
obiektu Loader. W tym momencie kod znajdujący się w pliku modułu SWF może być wykonany w celu inicjalizacji i startu modułu. W trybie „spoza listy” instancja klasy Loader może być również wykorzystana do załadowania pliku SWF zawierającego składniki lub zasoby multimedialne. I ponownie możliwe jest korzystanie z powiadomień o zdarzeniach obiektu LoaderInfo w celu wykrywania zakończenia ładowania składników. W tym momencie aplikacja może zacząć korzystać ze składników i zasobów multimedialnych w bibliotece pliku SWF poprzez instancjonowanie klas ActionScript 3.0, które reprezentują te składniki i zasoby.
W celu określenia stanu obiektu Loader należy monitorować następujące zdarzenia skojarzone z właściwością contentLoaderInfo
obiektu Loader:
- Zdarzenie
open
jest wywoływane przy rozpoczęciu ładowania. - Zdarzenie
ioError
lubsecurityError
jest wywoływane, w sytuacji gdy plik nie może być załadowany lub przy wystąpieniu błędu w trakcie ładowania. - Zdarzenie
progress
jest wywoływane ciągle w trakcie ładowania pliku. - Zdarzenie
complete
jest wywoływane w momencie zakończenia ładowania pliku, ale przed udostępnieniem metod i właściwości załadowanego klipu filmowego. - Zdarzenie
init
jest wywoływane po udostępnieniu właściwości i metod załadowanego pliku SWF, co umożliwia jego manipulację. Zdarzenie jest wywoływane przed procedurą obsługi zdarzeniacomplete
. Przy strumieniowaniu plików SWF zdarzenieinit
może pojawić się znacznie wcześniej niż zdarzeniecomplete
. W większości przypadków należy korzystać z modułu obsługi zdarzeniainit
.
Uwagi (tylko iOS): Aplikacja AIR działająca w systemie iOS może wczytywać pliki SWF zawierające kod ActionScript tylko z pakietu aplikacji. To ograniczenie obowiązuje dla każdego kodu ActionScript, również dla zasobów z nazwami klas wyeksportowanymi do kodu ActionScript. Aby wczytać jakikolwiek plik SWF, należy to zrobić przy użyciu tej samej domeny aplikacji, której użyto dla macierzystego pliku SWF.
W wersjach środowiska AIR starszych niż 3.6 można wczytywać tylko pliki SWF niezawierające kodu bajtowego ActionScript — niezależnie od tego, czy wczytywanie odbywa się z pakietu aplikacji, czy przez sieć. Zamiast używać zewnętrznego pliku SWF z kodem ActionScript, można utworzyć bibliotekę SWC i połączyć ją z głównym plikiem SWF.
Te ograniczenia nie dotyczą aplikacji uruchamianych w symulatorze systemu iOS (z parametrem ipa-test-interpreter-simulator lub ipa-debug-interpreter-simulator) ani w trybie interpretera (z parametrem ipa-test-interpreter lub ipa-debug-interpreter).
Powiązane elementy interfejsu API
close | () | metoda |
public function close():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Anuluje operację metody load()
, która jest w trakcie wykonywania dla instancji Loader.
Powiązane elementy interfejsu API
load | () | metoda |
public function load(request:URLRequest, context:LoaderContext = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ładuje plik SWF, JPEG, stopniowy JPG, nieanimowany GIF lub plik PNG do obiektu podrzędnego tego obiektu Loader. W przypadku ładowania animowanego pliku GIF wyświetlana jest tylko pierwsza klatka. Biorąc pod uwagę, iż obiekt Loader może zawierać wyłącznie pojedynczy obiekt podrzędny, wywoływanie kolejnego żądania load()
kończy poprzednie żądanie, jeżeli takie oczekuje na wykonanie, oraz rozpoczyna nowe ładowanie.
Uwaga: W środowisku AIR 1.5 i programie Flash Player 10 maksymalna szerokość i wysokość ładowanego obrazu wynosi 8191 pikseli, a łączna liczba pikseli nie może przekroczyć 16 777 215. (A zatem, jeśli ładowany obraz ma szerokość 8,191 pikseli, nie może być wyższy niż 2048 pikseli). W prorgamie Flash Player 9 i wcześniejszych wersjach oraz w środowisku AIR 1.1 i wcześniejszych wersjach ograniczenie wysokości i szerokości wynosiło 2880 pikseli.
Plik SWF lub obraz załadowany do obiektu Loader dziedziczy położenie oraz właściwości obrotu i skali nadrzędnych obiektów wyświetlanych obiektu Loader.
Należy stosować metodę unload()
do usuwania filmów lub obrazów załadowanych tą metodą, lub do anulowania operacji ładowania będących w trakcie wykonywania.
Istnieje możliwość zablokowania używania tej metody przez plik SWF. W tym celu należy ustawić parametr allowNetworking
znaczników object
oraz embed
na stronie HTML zawierającej zawartość SWF.
Uwagi dotyczące systemu iOS
Aplikacja AIR działająca w systemie iOS może wczytywać pliki SWF zawierające kod ActionScript tylko z pakietu aplikacji. To ograniczenie obowiązuje dla każdego kodu ActionScript, również dla zasobów z nazwami klas wyeksportowanymi do kodu ActionScript. Aby wczytać jakikolwiek plik SWF, należy to zrobić przy użyciu tej samej domeny aplikacji, której użyto dla macierzystego pliku SWF. Przykład:
var loader:Loader = new Loader(); var url:URLRequest = new URLRequest("swfs/SecondarySwf.swf"); var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null); loader.load(url, loaderContext);
W systemie iOS nie można też wczytać pliku SWF zawierającego jakikolwiek kod bajtowy ActionScript, a następnie usunąć go i wczytać ponownie. Próba wykonania takiej operacji powoduje wygenerowanie przez środowisko wykonawcze błędu 3764.
W wersjach środowiska AIR starszych niż 3.6 można wczytywać tylko pliki SWF niezawierające kodu bajtowego ActionScript — niezależnie od tego, czy wczytywanie odbywa się z pakietu aplikacji, czy przez sieć. Zamiast używać zewnętrznego pliku SWF z kodem ActionScript, można utworzyć bibliotekę SWC i połączyć ją z głównym plikiem SWF.
Te ograniczenia nie dotyczą aplikacji uruchamianych w symulatorze systemu iOS (z parametrem ipa-test-interpreter-simulator lub ipa-debug-interpreter-simulator) ani w trybie interpretera (z parametrem ipa-test-interpreter lub ipa-debug-interpreter).
Zabezpieczenia modułu wczytującego
Korzystając z tej metody należy uwzględnić model zabezpieczeń programu Flash Player, który został przedstawiony w opisie klasy Loader.
W programie Flash Player 10 i nowszych wersjach, jeśli użyty zostanie wieloczęściowy nagłówek Content-Type (np. "multipart/form-data"), w którym przesyłane są pliki (wskazywane przez parametr "filename" w nagłówku "content-disposition" w treści operacji POST), wówczas operacja POST podlega regułom zabezpieczeń zastosowanym do wysyłania plików:
- Operację POST należy wykonać w odpowiedzi na działanie zainicjowane przez użytkownika, np. kliknięcie myszy lub naciśnięcie klawisza.
- Jeśli operacja POST jest operacją międzydomenową (cel operacji POST nie znajduje się na tym samym serwerze, co plik SWF, który wysyła żądanie POST), docelowy serwer musi dostarczyć plik reguł URL, który zezwoli na międzydomenowy dostęp.
Dla dowolnego wieloczęściowego nagłówka Content-Type również składnia musi być poprawna (zgodnie ze standardem RFC2046). Jeśli składnia okaże się niepoprawna, operacja POST będzie podlegać regułom zabezpieczeń stosowanym do wysyłania plików.
Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo.
Parametry
request:URLRequest — Bezwzględny lub względny URL pliku SWF, JPG, GIF lub PNG, który zostanie załadowany. Ścieżka względna musi być względna w stosunku pliku SWF. Bezwzględny URL musi zawierać odwołanie do protokołu, jak na przykład http:// lub pliku:///. Nazwy plików nie mogą zawierać określeń stacji dysków.
| |
context:LoaderContext (default = null ) — Obiekt LoaderContext, który zawiera właściwości definiujące poniższe kwestie:
Jeśli parametr Tylko iOS: Aby w środowisku AIR for iOS wywołać metodę Aby znaleźć wszystkie szczegóły, zobacz opis właściwości w klasie LoaderContext. |
Zdarzenia
asyncError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent i nie można dodać wczytanej zawartości jako podrzędnej względem określonego obiektu DisplayObjectContainer. Może się to zdarzyć, jeśli wczytano zawartość typu flash.display.AVM1Movie lub wywołanie metody addChild() obiektu requestedContentParent generuje błąd.
| |
complete: — Wywoływane przez obiekt contentLoaderInfo po załadowaniu pliku. Zdarzenie complete jest zawsze wywoływane po zdarzeniu init .
| |
httpStatus: — Wywoływane przez obiekt contentLoaderInfo po wygenerowaniu żądania sieciowego za pośrednictwem HTTP, pod warunkiem że program Flash Player może wykryć kod stanu HTTP.
| |
init: — Wywoływane przez obiekt contentLoaderInfo , gdy właściwości i metody załadowanego pliku SWF są dostępne. Zdarzenie init zawsze poprzedza zdarzenie complete .
| |
ioError: — Wywoływane przez obiekt contentLoaderInfo , gdy wystąpi błąd wejścia lub wyjścia uniemożliwiający wykonanie operacji ładowania.
| |
open: — Wywoływane przez obiekt contentLoaderInfo po uruchomieniu operacji ładowania.
| |
progress: — Wywoływane przez obiekt contentLoaderInfo w miarę odbierania danych w toku operacji ładowania.
| |
securityError: — Wywoływane przez obiekt contentLoaderInfo , gdy plik SWF w obszarze izolowanym lokalnego systemu plików podejmie próbę załadowania zawartości do obszaru izolowanego sieci lokalnej lub vice versa.
| |
securityError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent , a obszar izolowany właściwości LoaderContext.requestedContentParent nie ma dostępu do wczytanego pliku SWF.
| |
unload: — Wywoływane przez obiekt contentLoaderInfo po usunięciu załadowanego obiektu.
|
Zgłasza
IOError — Wartością właściwości digest obiektu request nie jest wartość null . Należy tylko ustawić właściwość digest obiektu URLRequest w czasie wywoływania metody URLLoader.load() , gdy wczytywany jest plik SWZ (składnik platformy Adobe).
| |
SecurityError — Właściwość LoaderContext.securityDomain musi mieć wartość null lub SecurityDomain.currentDomain . Odzwierciedla to fakt, iż możliwe jest umieszczenie załadowanego multimedia tylko w jego naturalnym obszarze izolowanym lub użytkownika (ta druga opcja wymaga pliku z polityką).
| |
SecurityError — Lokalne pliki SWF mogą ustawiać właściwość LoaderContext.securityDomain wyłącznie na null . Nie jest dozwolone importowanie multimediów innych niż lokalne do lokalnego obszaru izolowanego, lub umieszczania innych mediów lokalnych w miejscu innym, niż ich naturalny obszar izolowany.
| |
SecurityError — Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
| |
SecurityError — Jeżeli właściwości applicationDomain lub securityDomain parametru context pochodzą z niedozwolonej domeny.
| |
SecurityError — Jeżeli lokalny plik SWF próbuje wykorzystać właściwość securityDomain parametru context .
| |
IllegalOperationError — Jeśli właściwość requestedContentParent parametru context ma wartość Loader .
| |
IllegalOperationError — Jeśli dla parametru LoaderContext.parameters ustawiono wartość inną niż null i zawiera on pewne wartości typów innych niż String.
| |
IllegalOperationError — W systemie iOS, gdy aplikacja próbuje wczytać plik SWF znajdujący się w domenie aplikacji innej niż główna domena danej aplikacji.
| |
IllegalOperationError — W systemie iOS, gdy aplikacja próbuje ponownie wczytać plik SWF zawierający kod bajtowy ActionScript, który został już wczytany i usunięty.
| |
Error — W systemie iOS, gdy aplikacja próbuje wczytać plik SWF znajdujący się poza pakietem aplikacji i zawierający kod ActionScript. Nie można przechwycić tego błędu jako wyjątku. Powoduje on wyświetlenie na ekranie aplikacji okna dialogowego „Nieskompilowany kod ActionScript”. W wersjach środowiska AIR starszych niż 3.6 ten błąd występuje przy próbie wczytania jakiegokolwiek pliku SWF z kodem ActionScript — zarówno zewnętrznego, jak i dołączonego do pakietu aplikacji.
|
Powiązane elementy interfejsu API
loadBytes | () | metoda |
public function loadBytes(bytes:ByteArray, context:LoaderContext = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wczytuje dane binarne przechowywane w obiekcie ByteArray.
Metoda loadBytes()
jest asynchroniczna. Przed uzyskaniem dostępu do właściwości załadowanego obiektu należy poczekać na zdarzenie "init".
Podczas używania tej metody należy uwzględnić model zabezpieczeń programu Flash Player, który został przedstawiony w opisie klasy Loader.
Uwaga (tylko iOS): Aplikacja AIR działająca w systemie iOS może wczytywać pliki SWF zawierające kod ActionScript tylko z pakietu aplikacji. To ograniczenie obowiązuje dla każdego kodu ActionScript, również dla zasobów z nazwami klas wyeksportowanymi do kodu ActionScript. Aby wczytać jakikolwiek plik SWF, należy to zrobić przy użyciu tej samej domeny aplikacji, której użyto dla macierzystego pliku SWF.
W wersjach środowiska AIR starszych niż 3.6 wywołanie tej metody nie powoduje żadnej reakcji w systemie iOS.
Parametry
bytes:ByteArray — Obiekt ByteArray. Zawartość obiektu ByteArray może być dowolny z formatów plików obsługiwanych przez klasę Loader: SWF, GIF, JPEG lub PNG.
| |
context:LoaderContext (default = null ) — Obiekt LoaderContext. Wyłącznie właściwość applicationDomain obiektu LoaderContext jest stosowana; właściwości checkPolicyFile i securityDomain nie są stosowane.
Jeśli parametr Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo. |
Zdarzenia
asyncError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent i nie można dodać wczytanej zawartości jako podrzędnej względem określonego obiektu DisplayObjectContainer. Może się to zdarzyć, jeśli wczytano zawartość typu flash.display.AVM1Movie lub wywołanie metody addChild() obiektu requestedContentParent generuje błąd.
| |
complete: — Wywoływane przez obiekt contentLoaderInfo po zakończeniu operacji. Zdarzenie complete jest zawsze wywoływane po zdarzeniu init .
| |
init: — Wywoływane przez obiekt contentLoaderInfo , gdy właściwości i metody załadowanych danych są dostępne. Zdarzenie init zawsze poprzedza zdarzenie complete .
| |
ioError: — Wywoływane przez obiekt contentLoaderInfo , gdy środowisko wykonawcze nie może przeanalizować danych w tablicy bajtów.
| |
open: — Wywoływane przez obiekt contentLoaderInfo po uruchomieniu operacji.
| |
progress: — Wywoływane przez obiekt contentLoaderInfo podczas przesyłania danych w pamięci.
| |
securityError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent , a obszar izolowany właściwości LoaderContext.requestedContentParent nie ma dostępu do wczytanego pliku SWF.
| |
unload: — Wywoływane przez obiekt contentLoaderInfo po usunięciu załadowanego obiektu.
|
Zgłasza
ArgumentError — Jeżeli właściwość length obiektu ByteArray nie jest większa od 0.
| |
IllegalOperationError — Jeżeli właściwość checkPolicyFile lub securityDomain parametru context mają wartość inną niż null.
| |
IllegalOperationError — Jeśli właściwość requestedContentParent parametru context ma wartość Loader .
| |
IllegalOperationError — Jeśli dla parametru LoaderContext.parameters ustawiono wartość inną niż null i zawiera on pewne wartości typów innych niż String.
| |
IllegalOperationError — W systemie iOS, gdy aplikacja próbuje wczytać plik SWF znajdujący się w domenie aplikacji innej niż główna domena danej aplikacji.
| |
IllegalOperationError — W systemie iOS, gdy aplikacja próbuje ponownie wczytać plik SWF zawierający kod bajtowy ActionScript, który został już wczytany i usunięty.
| |
Error — W systemie iOS, gdy aplikacja próbuje wczytać plik SWF znajdujący się poza pakietem aplikacji i zawierający kod ActionScript. Nie można przechwycić tego błędu jako wyjątku. Powoduje on wyświetlenie na ekranie aplikacji okna dialogowego z komunikatem „Nieskompilowany kod ActionScript”. W wersjach środowiska AIR starszych niż 3.6 ten błąd występuje przy próbie wczytania jakiegokolwiek pliku SWF z kodem ActionScript — zarówno zewnętrznego, jak i dołączonego do pakietu aplikacji.
| |
SecurityError — Jeżeli dostarczona właściwość applicationDomain parametru context pochodzi z niedozwolonej domeny.
| |
SecurityError — Nie można połączyć się z portem, który zazwyczaj jest zastrzeżony. Pełną listę zablokowanych portów zawiera sekcja „Ograniczanie sieciowych interfejsów API” w publikacji ActionScript 3.0 — podręcznik dla programistów.
|
Powiązane elementy interfejsu API
loadFilePromise | () | metoda |
public function loadFilePromise(promise:IFilePromise, context:LoaderContext = null):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2.5 |
Wczytuje wystąpienie klasy IFilePromise.
Metoda loadFilePromise
przyjmuje obiekt IFilePromise
i wczytuje dane binarne. Jeśli dane są w strumieniu progresywnym, na przykład jest to materiał wideo, program czeka na zdarzenia „init” lub „progress” przed uzyskaniem dostępu do właściwości wczytanego obiektu. Jeśli tak nie jest, program czeka na zdarzenie „complete”, aby uzyskać pewność, że dane zostały wczytane do końca.
Podczas używania tej metody należy uwzględnić model zabezpieczeń programu Flash Player, który został przedstawiony w opisie klasy Loader.
Parametry
promise:IFilePromise — Obiekt IFilePromise. Źródłem danych tego obiektu może być plik dowolnego formatu obsługiwanego przez klasę Loader: SWF, GIF, JPEG lub PNG.
| |
context:LoaderContext (default = null ) — Obiekt LoaderContext. Wyłącznie właściwość applicationDomain obiektu LoaderContext jest stosowana; właściwości checkPolicyFile i securityDomain nie są stosowane.
Jeśli parametr Więcej informacji na temat zabezpieczeń zawiera odpowiedni temat w Centrum programistów programu Flash Player w kategorii Bezpieczeństwo. |
Zdarzenia
asyncError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent i nie można dodać wczytanej zawartości jako podrzędnej względem określonego obiektu DisplayObjectContainer. Może się to zdarzyć, jeśli wczytano zawartość typu flash.display.AVM1Movie lub wywołanie metody addChild() obiektu requestedContentParent generuje błąd.
| |
complete: — Wywoływane przez obiekt contentLoaderInfo po zakończeniu operacji. Zdarzenie complete jest zawsze wywoływane po zdarzeniu init .
| |
init: — Wywoływane przez obiekt contentLoaderInfo , gdy właściwości i metody załadowanych danych są dostępne. Zdarzenie init zawsze poprzedza zdarzenie complete .
| |
ioError: — Wywoływane przez obiekt contentLoaderInfo , gdy środowisko wykonawcze nie może wykonać analizy danych ze źródła danych lub nie można odczytać strumienia źródła danych.
| |
open: — Wywoływane przez obiekt contentLoaderInfo po uruchomieniu operacji.
| |
progress: — Wywoływane przez obiekt contentLoaderInfo podczas przesyłania danych w pamięci.
| |
securityError: — Wywoływane przez obiekt contentLoaderInfo , jeśli określono właściwość LoaderContext.requestedContentParent , a obszar izolowany właściwości LoaderContext.requestedContentParent nie ma dostępu do wczytanego pliku SWF.
| |
unload: — Wywoływane przez obiekt contentLoaderInfo po usunięciu załadowanego obiektu.
|
Zgłasza
IllegalOperationError — Jeśli właściwość requestedContentParent parametru context ma wartość Loader .
| |
IllegalOperationError — Jeśli dla parametru LoaderContext.parameters ustawiono wartość inną niż null i zawiera on pewne wartości typów innych niż String.
| |
ArgumentError — Jeśli obiekt IFilePromise przekazywany jako parametr jest wartością null.
|
Powiązane elementy interfejsu API
unload | () | metoda |
public function unload():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Usuwa element potomny tego obiektu Loader, który został wczytany za pomocą metody load()
. Właściwość property
powiązanego obiektu LoaderInfo jest resetowana do wartości null
. Element potomny nie konieczne jest niszczony, dlatego że inne obiekty mogą odwoływać się do niego, jednakże nie jest to już potomek obiektu Loader.
Wywołanie metody unload()
powoduje ustawienie właściwości contentLoaderInfo
obiektu Loader na wartość null
. Wszystkie zasoby wizualne wczytane razem z plikiem SWF są usuwane z pamięci. Definicje klas ActionScript pochodzące z wczytanego pliku SWF pozostają w pamięci, a kod w tej samej domenie aplikacji co wczytany plik SWF może uzyskiwać dostęp do tych klas i tworzyć ich nowe wystąpienia.
Uwaga (tylko system iOS): Ta metoda nie ma wpływu na system iOS w przypadku wersji środowiska AIR starszych niż 3.6.
W ramach najlepszej praktyki przed usunięciem załadowanego podrzędnego pliku SWF koniecznie należ zamknąć wszelkie strumienie w obiektach tego pliku, jak na przykład LocalConnection, NetConnection, NetStream oraz Sound. W innym przypadku audio w podrzędnym pliku SWF może być wciąż odgrywane, mimo iż plik ten został już usunięty. W celu zamknięcia strumieni w potomnym pliku SWF należy dodać detektor zdarzeń do potomka, który nasłuchuje zdarzenia unload
. Gdy obiekt macierzysty wywołuje metodę Loader.unload()
, wówczas do potomka wywoływane jest zdarzenieunload
. Poniższy kod ilustruje jak można tego dokonać:
function closeAllStreams(evt:Event) { myNetStream.close(); mySound.close(); myNetConnection.close(); myLocalConnection.close(); } myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, closeAllStreams);
Powiązane elementy interfejsu API
unloadAndStop | () | metoda |
public function unloadAndStop(gc:Boolean = true):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Podejmuje próbę usunięcia załadowanej zawartości pochodnego pliku SWF oraz zatrzymuje wykonywanie poleceń z ładowanych plików SWF. Ta metoda podejmuje próbę usunięcia załadowanych plików SWF, które zostały załadowane za pomocą metody Loader.load()
lub Loader.loadBytes()
poprzez usunięcie odwołań do obiektów EventDispatcher, NetConnection, Timer, Sound lub Video podrzędnego pliku SWF. W rezultacie występują następujące zdarzenia dla podrzędnego pliku SWF oraz listy wyświetlanej tego pliku:
- Dźwięki zostają zatrzymane.
- Detektory zdarzeń stołu montażowego zostają usunięte.
- Detektory zdarzeń
enterFrame
,frameConstructed
,exitFrame
,activate
ideactivate
zostają usunięte. - Czasomierze zostają zatrzymane.
- Instancje Camera i Microphone zostają odłączone.
- Klipy filmowe zostają zatrzymane.
Wywołanie metody unloadAndStop()
powoduje ustawienie właściwości contentLoaderInfo
obiektu Loader na wartość null
. Wszystkie zasoby wizualne wczytane razem z plikiem SWF są usuwane z pamięci. Definicje klas ActionScript pochodzące z wczytanego pliku SWF pozostają w pamięci, a kod w tej samej domenie aplikacji co wczytany plik SWF może uzyskiwać dostęp do tych klas i tworzyć ich nowe wystąpienia.
Uwaga (tylko system iOS): Ta metoda nie ma wpływu na system iOS w przypadku wersji środowiska AIR starszych niż 3.6.
Parametry
gc:Boolean (default = true ) — Wydaje modułowi czyszczenia pamięci instrukcję, aby usuwał podrzędne obiekty SWF (true ) lub nie usuwał ich (false ). Jeśli jednocześnie odbywa się usuwanie wielu załadowanych obiektów, ustawienie dla parametru gc wartości false może poprawić wydajność aplikacji. Jeśli jednak dla parametru ustawiona jest wartość false , treści multimedialne i obiekty wyświetlane podrzędnego pliku SWF mogą pozostawać w pamięci po uruchomieniu polecenia unloadAndStop() .
|
Powiązane elementy interfejsu API
- Tworzona jest właściwość
url
, która jest lokalizacją oraz nazwą pliku obrazu. - W konstruktorze
LoaderExample
nowy obiekt Loader nazwanyloader
jest tworzony, a następnie przekazywany do metodyconfigureListeners()
, opisanej w kroku nr 3. - Konstruktor tworzy nowe wystąpienie klasy URLRequest —
request
— z przekazaną właściwościąurl
, aby nazwa i lokalizacja pliku były znane. - Obiekt
request
jest przekazywany do metodyload()
obiektuloader
, który ładuje obraz do listy wyświetlania. - Detektor zdarzeń
clickHandler
jest zarejestrowany dla zdarzeniaclick
w programie ładującym. Po kliknięciu myszą załadowany obraz jest usuwany. - Metoda
configureListeners()
dodaje siedem detektorów zdarzeń przy wykorzystaniu poniższych metod:- Metoda
completeHandler()
jest wykonywana w momencie zakończenia ładowania obrazu. - Metoda
httpStatusHandler()
jest wykonywana, jeśli obraz nie jest załadowany lokalne i tylko w sytuacji gdy żądanie sieciowe jest udostępnione, a moduł Flash Player może je wykryć. - Metoda
initHandler()
jest wykonywana przed metodącompleteHandler()
i po metodzieprogressHandler()
. Generalnie zdarzenieinit
jest bardziej przydatne przy ładowaniu plików SWF. - Metoda
ioErrorHandler()
jest wykonywana, jeżeli plik obrazu nie jest dostępny. - Metoda
openHandler()
jest wykonywana przy pierwszym otwarciu pliku. - Metoda
progressHandler()
jest wykonywana gdy rozpoczynane jest ładowanie pliku obrazu oraz ponownie, gdy ładowanie jest zakończone. - Metoda
unLoadHandler()
jest wykonywana, gdy załadowany obraz jest usuwany metodąunload()
w momencie kliknięcia obrazu przez użytkownika.
- Metoda
Należy pamiętać o następujących wymaganiach:
- Dla zilustrowania tego przykładu konieczne jest umieszczenie pliku o nazwie Image.gif w tym samym katalogu, co skompilowany plik SWF. Należy korzystać z obrazu, którego obszar mieści się w granicy wymiarów głównego pliku SWF.
- Wprawdzie przykład ten ilustruje wykorzystanie wszystkich zdarzeń dostępnych dla obiektu LoaderInfo, jednak większość sytuacji wymaga wykorzystania jedynie podzbioru zdarzeń. W szczególności przy ładowaniu wyłącznie pliku obrazu zdarzenie
complete
(oraz być może zdarzenieioError
) są wystarczające przy ładowaniu lokalnego obrazu.
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; public class LoaderExample extends Sprite { private var url:String = "Image.gif"; public function LoaderExample() { var loader:Loader = new Loader(); configureListeners(loader.contentLoaderInfo); loader.addEventListener(MouseEvent.CLICK, clickHandler); var request:URLRequest = new URLRequest(url); loader.load(request); addChild(loader); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(Event.INIT, initHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(Event.UNLOAD, unLoadHandler); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function initHandler(event:Event):void { trace("initHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function unLoadHandler(event:Event):void { trace("unLoadHandler: " + event); } private function clickHandler(event:MouseEvent):void { trace("clickHandler: " + event); var loader:Loader = Loader(event.target); loader.unload(); } } }
Tue Jun 12 2018, 12:06 PM Z