Pakiet | flash.utils |
Klasa | public class ByteArray |
Dziedziczenie | ByteArray Object |
Implementuje | IDataInput, IDataOutput |
Podklasy | ByteArrayAsset |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Uwaga: Klasa ByteArray jest przeznaczona dla zaawansowanych programistów, którzy wymagają dostępu do danych na poziomie bajtów.
Dane w pamięci są zapisane w postaci spakowanej tablicy (najbardziej spakowana reprezentacja dla typu danych) bajtów, ale instancją klasy ByteArray można manipulować za pomocą standardowych operatorów []
(dostęp do tablicy). Tablica może być również odczytywana i zapisywana, jak plik w pamięci — przy użyciu metod podobnych do stosowanych w klasach URLStream i Socket.
Ponadto obsługiwane są algorytmy kompresji i dekompresji zlib, deflate oraz LZMA, a także mechanizm serializacji obiektów do formatu AMF (Action Message Format).
Obiekt ByteArray może współużytkować pamięć dodatkową z wieloma wystąpieniami klasy Worker. Wystarczy w tym celu ustawić dla właściwości shareable
wartość true
.
Do możliwych zastosowań klasy ByteArray należą:
- Tworzenie niestandardowego protokołu w celu połączenia z serwerem.
- Zapisywanie własnego modułu URLEncoder/URLDecoder.
- Zapisywanie własnego pakietu AMF/Remoting.
- Optymalizowanie ilości danych poprzez stosowanie typów danych.
- Praca z danymi binarnymi wczytanymi z pliku.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
bytesAvailable : uint [tylko do odczytu]
Liczba bajtów, które można odczytać z tablicy bajtów, począwszy od bieżącej pozycji do końca tablicy. | ByteArray | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
defaultObjectEncoding : uint [statyczny]
Oznacza domyślne kodowanie obiektów dotyczące klasy ByteArray, które będzie używane w przypadku nowej instancji klasy ByteArray. | ByteArray | ||
endian : String
Powoduje zmianę lub odczytuje kolejność bajtów dla danych; Endian.BIG_ENDIAN lub Endian.LITTLE_ENDIAN. | ByteArray | ||
length : uint
Długość obiektu ByteArray w bajtach. | ByteArray | ||
objectEncoding : uint
Pozwala określić, czy podczas zapisywania w instancji klasy ByteArray lub czytania z niej, ma być używany format ActionScript 3.0, ActionScript 2.0 czy ActionScript 1.0. | ByteArray | ||
position : uint
Przenosi lub zwraca bieżące położenie wskaźnika plików do obiektu ByteArray. | ByteArray | ||
shareable : Boolean
Określa, czy podstawowa pamięć tablicy bajtów może być współużytkowana. | ByteArray |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy instancję klasy ByteArray, która reprezentuję upakowaną tablicę bajtów. Dzięki niej metody i właściwości tej klasy mogą być stosowane do optymalizowania zapisu danych i przetwarzania strumieniowego. | ByteArray | ||
Metoda ta w ramach pojedynczej operacji atomowej porównuje wartość całkowitą w tej tabeli bajtów z inną wartością całkowitą, a jeśli wartości są zgodne, zamienia bajty na tę inną wartość. | ByteArray | ||
W ramach pojedynczej operacji atomowej porównuje długość tej tablicy bajtów z podaną wartością, a w przypadku zgodnych wartości zmienia długość tablicy bajtów. | ByteArray | ||
Aplikacja usunie zawartość tablicy bajtów i ustawi dla właściwości length i position wartość 0. | ByteArray | ||
Kompresuje tablicę bajtów. | ByteArray | ||
Kompresuje tablicę bajtów przy użyciu algorytmu kompresji deflate. | ByteArray | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Dekompresuje tablicę bajtów przy użyciu algorytmu kompresji deflate. | ByteArray | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Czyta ze strumienia bajtów wartość typu Boolean. | ByteArray | ||
Czyta ze strumienia bajtów bajt ze znakiem. | ByteArray | ||
Pozwala odczytać ze strumienia bajtów liczbę bajtów określoną przez parametr długość. | ByteArray | ||
Czyta ze strumienia bajtów liczbę zmiennoprzecinkową o podwójnej precyzji (64 bity, IEEE 754). | ByteArray | ||
Czyta ze strumienia bajtów liczbę zmiennoprzecinkową o pojedynczej precyzji (32 bity, IEEE 754). | ByteArray | ||
Czyta ze strumienia bajtów 32-bitową liczbę całkowitą ze znakiem. | ByteArray | ||
Czyta ze strumienia bajtów wielobajtowy ciąg o określonej długości, korzysając z określonego zestawu znaków. | ByteArray | ||
readObject():*
Czyta z tablicy bajtów obiekt zakodowany w formacie serializowanym AMF. | ByteArray | ||
Czyta ze strumienia bajtów 16-bitową liczbę całkowitą ze znakiem. | ByteArray | ||
Czyta ze strumienia bajtów bajt bez znaku. | ByteArray | ||
Czyta ze strumienia bajtów 32-bitową liczbę całkowitą bez znaku. | ByteArray | ||
Czyta ze strumienia bajtów 16-bitową liczbę całkowitą bez znaku. | ByteArray | ||
Czyta ze strumienia bajtów ciąg znaków UTF-8. | ByteArray | ||
Czyta ze strumienia bajtów sekwencję bajtów UTF-8 określoną przez parametr długość, a zwraca ciąg znaków. | ByteArray | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Dostarcza możliwą do przesłonięcia metodę, która pozwala na dostosowywanie kodowania JSON wartości w obiekcie ByteArray. | ByteArray | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Konwertuje tablicę bajtów na ciąg znaków. | ByteArray | ||
Dekompresuje tablicę bajtów. | ByteArray | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object | ||
Zapisuje wartość typu Boolean. | ByteArray | ||
Zapisuje bajt w strumieniu bajtów. | ByteArray | ||
Zapisuje w strumieniu bajtów sekwencję bajtów o podanej długości (zmienna length) z podanej tablicy bajtów (zmienna bytes), zaczynając od podanej pozycji początkowej (zmienna offset, przy indeksie liczonym od zera). | ByteArray | ||
Zapisuje w strumieniu bajtów liczbę zmiennoprzecinkową o podwójnej precyzji (64 bity, IEEE 754). | ByteArray | ||
Zapisuje w strumieniu bajtów liczbę zmiennoprzecinkową o pojedynczej precyzji (32 bity, IEEE 754). | ByteArray | ||
Zapisuje w strumieniu bajtów 32-bitową liczbę całkowitą ze znakiem. | ByteArray | ||
Zapisuje w strumieniu bajtów wielobajtowy ciąg przy użyciu określonego zestawu znaków. | ByteArray | ||
Zapisuje obiekt w tablicy bajtów w formacie serializowanym AMF. | ByteArray | ||
Zapisuje w strumieniu bajtów 16-bitową liczbę całkowitą. | ByteArray | ||
Zapisuje w strumieniu bajtów 32-bitową liczbę całkowitą bez znaku. | ByteArray | ||
Zapisuje w strumieniu bajtów ciąg znaków UTF-8. | ByteArray | ||
Zapisuje w strumieniu bajtów ciąg UTF-8. | ByteArray |
bytesAvailable | właściwość |
bytesAvailable:uint
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Liczba bajtów, które można odczytać z tablicy bajtów, począwszy od bieżącej pozycji do końca tablicy.
Przy każdej operacji uzyskiwania dostępu do obiektu ByteArray razem z metodami odczytu należy korzystać z właściwości bytesAvailable
, aby upewnić się, że odczytywane są odpowiednie dane.
Implementacja
public function get bytesAvailable():uint
defaultObjectEncoding | właściwość |
defaultObjectEncoding:uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Oznacza domyślne kodowanie obiektów dotyczące klasy ByteArray, które będzie używane w przypadku nowej instancji klasy ByteArray. Po utworzeniu nowej instancji ByteArray kodowanie tej instancji rozpoczyna się od wartości defaultObjectEncoding
. Właściwość defaultObjectEncoding
zostaje zainicjowana wartością ObjectEncoding.AMF3
.
Podczas zapisywania lub odczytywania obiektu z danych binarnych używana jest wartość objectEncoding
w celu określenia formatu, który powinien być używany: ActionScript 3.0, ActionScript2.0 lub ActionScript 1.0. Wartość jest stałą z klasy ObjectEncoding.
Implementacja
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
Powiązane elementy interfejsu API
endian | właściwość |
endian:String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Powoduje zmianę lub odczytuje kolejność bajtów dla danych: Endian.BIG_ENDIAN
lub Endian.LITTLE_ENDIAN
. Wartość domyślna to BIG_ENDIAN
.
Implementacja
public function get endian():String
public function set endian(value:String):void
Powiązane elementy interfejsu API
length | właściwość |
length:uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Długość obiektu ByteArray w bajtach.
Jeśli dla długości ustawiona jest wartość większa niż długość aktualna, prawa strona tablicy bajtów zostanie zapełniona zerami.
Jeśli dla długości ustawiona jest wartość mniejsza niż długość aktualna, tablica bajtów zostanie przycięta.
Implementacja
public function get length():uint
public function set length(value:uint):void
objectEncoding | właściwość |
objectEncoding:uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Pozwala określić, czy podczas zapisywania w instancji klasy ByteArray lub czytania z niej, ma być używany format ActionScript 3.0, ActionScript 2.0 czy ActionScript 1.0. Wartość jest stałą z klasy ObjectEncoding.
Implementacja
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
Powiązane elementy interfejsu API
position | właściwość |
position:uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Przenosi lub zwraca bieżące położenie wskaźnika plików do obiektu ByteArray. Jest to miejsce, w którym kolejne wywołanie metody odczytu powoduje odczytywanie, a wywołanie metody zapisu powoduje zapisywanie.
Implementacja
public function get position():uint
public function set position(value:uint):void
shareable | właściwość |
shareable:Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.5, AIR 3.5 |
Określa, czy podstawowa pamięć tablicy bajtów ma właściwość shareable (jest współużytkowana). W przypadku współużytkowanej tablicy bajtów wszystkie wystąpienia klasy ByteArray we wszystkich procesach roboczych odnoszących się do tablicy bajtów korzystają z tej samej podstawowej pamięci systemowej. Wartością domyślną jest false
, co oznacza, że pamięć podstawowa nie jest współużytkowana przez procesy robocze.
Ta właściwość ma także wpływ na działania środowiska wykonawczego w odniesieniu do tej tablicy bajtów, jeśli została ona przekazana do procesu roboczego przy użyciu metody Worker.setSharedProperty()
lub MessageChannel.send()
.
- Niewspółużytkowana: Jeżeli ta właściwość ma wartość
false
, po przekazaniu tablicy bajtów do procesu roboczego środowisko wykonawcze tworzy pełną kopię tablicy bajtów, przydzielając nowy segment pamięci, w którym ma być przechowywana zawartość zduplikowanej tablicy bajtów. - Współużytkowana: Jeżeli ta właściwość ma wartość
true
, po przekazaniu tablicy bajtów do procesu roboczego środowisko wykonawcze używa tej samej pamięci podstawowej jako bufora do przechowywania zawartości zarówno oryginalnego wystąpienia klasy ByteArray, jak i nowego wystąpienia utworzonego dla drugiego procesu roboczego. Oba wystąpienia klasy ByteArray zawierają odniesienia do tej samej podstawowej tablicy bajtów.
Możliwość jednoczesnego uzyskania dostępu do współużytkowanej tablicy bajtów przez wiele procesów roboczych może spowodować niepożądaną sytuację, w której oba procesy robocze równocześnie modyfikują zawartość pamięci podstawowej tablicy bajtów. Dostępem do pamięci współużytkowanej można sterować za pomocą kilku mechanizmów:
- Mechanizmy porównywania i zamiany są udostępniane przez metody
atomicCompareAndSwapIntAt()
iatomicCompareAndSwapLength()
klasy ByteArray. - Specjalistyczne mechanizmy są dostarczane przez klasy Mutex i Condition (w pakiecie flash.concurrent).
Ustawienie tej właściwości na wartość true
wpływa wyłącznie na dalszy kod przekazujący tę tablicę bajtów do procesu roboczego. Wszystkie kopie tej tablicy bajtów, które zostały już przekazane do procesu roboczego, istnieją jako oddzielne kopie.
Jeśli wartość true
właściwości zostanie zmieniona na wartość false
, podstawowa pamięć tablicy bajtów zostanie natychmiast skopiowana do nowego segmentu pamięci systemowej. Od tego momentu wystąpienie klasy ByteArray będzie używać nowej pamięci podstawowej. W związku z tym podstawowa pamięć tej tablicy bajtów nie będzie już współużytkowana z innymi procesami roboczymi. Jeżeli tablica bajtów zostanie następnie przekazana do procesu roboczego, jej pamięć podstawowa zostanie skopiowana, tak jak w przypadku każdego obiektu ByteArray, którego właściwość shareable
ma wartość false
.
Wartością domyślną jest false.
Implementacja
public function get shareable():Boolean
public function set shareable(value:Boolean):void
Powiązane elementy interfejsu API
ByteArray | () | Konstruktor |
public function ByteArray()
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy wystąpienie klasy ByteArray, która reprezentuję upakowaną tablicę bajtów. Dzięki niej metody i właściwości tej klasy mogą być stosowane do optymalizowania zapisu danych i przetwarzania strumieniowego.
atomicCompareAndSwapIntAt | () | metoda |
public function atomicCompareAndSwapIntAt(byteIndex:int, expectedValue:int, newValue:int):int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.5, AIR 3.5 |
Metoda ta w ramach pojedynczej operacji atomowej porównuje wartość całkowitą w tej tabeli bajtów z inną wartością całkowitą, a jeśli wartości są zgodne, zamienia bajty na inną wartość.
Ta metoda powinna być stosowana z tablicą bajtów, której pamięć jest współużytkowana przez wiele procesów roboczych (gdy właściwość shareable
wystąpienia klasy ByteArray ma wartość true
). Metoda wykonuje następującą sekwencję kroków:
- Odczytuje wartość całkowitą z tej tablicy bajtów, rozpoczynając od indeksu określonego (w bajtach) w argumencie
byteIndex
. - Porównuje faktyczną wartość z tej tablicy bajtów oraz wartość przekazaną w argumencie
expectedValue
. - Jeśli obie wartości są równe, zapisuje wartość argumentu
newValue
w tablicy bajtów w lokalizacji określonej przez parametrbyteIndex
oraz zwraca wartość, która była wcześniej zapisana w tych bajtach (wartość odczytaną w kroku 1). - W przeciwnym wypadku zawartość tablicy bajtów nie ulega zmianie, a metoda zwraca faktyczną wartość odczytaną z tablicy bajtów.
Wszystkie te kroki są wykonywane w ramach pojedynczej atomowej transakcji sprzętowej. Gwarantuje to, że podczas operacji porównywania i zamiany żadne operacje z innych procesów roboczych nie zmodyfikują zawartości tablicy bajtów.
Parametry
byteIndex:int — Pozycja indeksu (w bajtach), z której odczytywana jest wartość całkowita do porównania, oraz do której zapisywana jest wartość newValue , jeśli porównanie daje zgodny wynik. Ta wartość musi być wielokrotnością liczby 4.
| |
expectedValue:int — Wartość, która powinna być zgodna z zawartością tablicy bajtów w określonym indeksie.
| |
newValue:int — Nowa wartość, która zastępuje zawartość tablicy bajtów w określonym indeksie, jeśli porównanie daje zgodny wynik.
|
int — Poprzednia wartość w określonej lokalizacji, jeśli porównywane wyniki są zgodne, lub faktyczna wartość z tablicy bajtów, jeżeli wartości faktyczna i oczekiwana są niezgodne.
|
Zgłasza
ArgumentError — Jeśli wartość byteIndex nie jest wielokrotnością liczby 4 lub jest ujemna.
|
Powiązane elementy interfejsu API
atomicCompareAndSwapLength | () | metoda |
public function atomicCompareAndSwapLength(expectedLength:int, newLength:int):int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11.5, AIR 3.5 |
W ramach pojedynczej operacji atomowej porównuje długość tej tablicy bajtów z podaną wartością, a w przypadku zgodnych wartości zmienia długość tablicy bajtów.
Ta metoda powinna być stosowana z tablicą bajtów, której pamięć jest współużytkowana przez wiele procesów roboczych (gdy właściwość shareable
wystąpienia klasy ByteArray ma wartość true
). Metoda wykonuje następujące kroki:
- Odczytuje wartość całkowitą właściwości
length
wystąpienia klasy ByteArray. - Porównuje długość z wartością przekazaną w argumencie
expectedLength
. - Jeśli dwie wartości są zgodne, zmienia długość tablicy bajtów na wartość przekazaną w parametrze
newLength
, zwiększając lub zmniejszając rozmiar tablicy bajtów. - W przeciwnym wypadku tablica bajtów nie ulega zmianie.
Wszystkie te kroki są wykonywane w ramach pojedynczej atomowej transakcji sprzętowej. Gwarantuje to, że podczas operacji porównywania i zmiany rozmiaru żadne operacje z innych procesów roboczych nie zmodyfikują zawartości tablicy bajtów.
Parametry
expectedLength:int — Oczekiwana wartość właściwości length klasy ByteArray. Jeśli określona wartość i faktyczna wartość są zgodne, długość tablicy bajtów jest modyfikowana.
| |
newLength:int — Nowa wartość długości dla tablicy bajtów w przypadku pomyślnego wyniku porównania.
|
int — Poprzednia wartość właściwości length klasy ByteArray niezależnie od tego, czy uległa zmianie.
|
Powiązane elementy interfejsu API
clear | () | metoda |
public function clear():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Aplikacja usunie zawartość tablicy bajtów i ustawi dla właściwości length
i position
wartość 0. Jawne wywołanie tej metody powoduje zwolnienie pamięci używanej przez instancję ByteArray.
compress | () | metoda |
public function compress(algorithm:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9 |
Kompresuje tablicę bajtów. Cała tablica bajtów jest skompresowana. Po wywołaniu właściwość length
obiektu ByteArray zostanie ustawiona na nową długość. Właściwość position
została ustawiona na końcu tablicy bajtów.
Aby określić algorytm kompresji, należy przekazać wartość (zdefiniowaną w klasie CompressionAlgorithm) jako parametr algorithm
. Są obsługiwane następujące algorytmy:
Format danych skompresowanych zlib został opisany na stronie: http://www.ietf.org/rfc/rfc1950.txt.
Algorytm kompresji deflate został opisany na stronie: http://www.ietf.org/rfc/rfc1951.txt.
Opis algorytmu kompresji LZMA można znaleźć na stronie http://www.7-zip.org/7z.html.
Algorytm kompresji deflate jest używany w kilku formatach kompresji, takich jak zlib, gzip, niektóre implementacje zip oraz inne. Gdy dane są kompresowane przy użyciu jednego z tych formatów kompresji, wówczas — oprócz zapisywania skompresowanej wersji oryginalnych danych — dane formatu kompresji (np. plik .zip) zawierają również metadane. Niektóre przykłady typów metadanych zawartych w różnych formatach plików obejmują: nazwy plików, daty/godziny modyfikacji pliku, oryginalne rozmiary plików, opcjonalne komentarze, sumy kontrolne i wiele więcej.
Na przykład: gdy obiekt ByteArray zostanie skompresowany za pomocą algorytmu zlib, wynikowy obiekt ByteArray otrzyma określoną strukturę i format. Niektóre bajty będą zawierały metadane dotyczące danych skompresowanych, inne bajty będą zawierały rzeczywistą skompresowaną wersję oryginalnych danych ByteArray. Zgodnie z definicją specyfikacji formatu skompresowanych danych zlib (tj. cześć, która zawiera skompresowaną postać danych oryginalnych) — dane są kompresowane przy użyciu algorytmu deflate. Dlatego te bajty są identyczne z wynikiem wywołania compress(air.CompressionAlgorithm.DEFLATE)
dla pierwotnego obiektu ByteArray. Jednak wynik wywołania compress(air. CompressionAlgorithm.ZLIB)
zawiera dodatkowe metadane, podczas gdy wynik wywołania compress(CompressionAlgorithm.DEFLATE)
zawiera jedynie skompresowaną wersję oryginalnych danych obiektu ByteArray i nic poza tym.
Aby użyć formatu deflate do kompresji danych instancji ByteArray do określonego formatu, takiego jak gzip lub zip, nie wystarczy wywołać metody compress(CompressionAlgorithm.DEFLATE)
. Należy utworzyć strukturę obiektu ByteArray zgodnie ze specyfikacją formatu kompresji, łącznie z odpowiednimi metadanymi, a także danymi skompresowanymi uzyskanymi za pomocą formatu deflate. I podobnie — w celu dekodowania danych skompresowanych w formacie, takim jak gzip lub zip, nie wystarczy wywołać metody uncompress(CompressionAlgorithm.DEFLATE)
dla danych. Najpierw należy oddzielić metadane od danych skompresowanych, a następnie można użyć formatu deflate w celu dokonania dekompresji skompresowanych danych.
Parametry
algorithm:String (default = NaN ) — Używany algorytm kompresowania. Poprawne wartości są definiowane jako stałe w klasie CompressionAlgorithm. Domyślnie używany jest format zlib. Wywołanie compress(CompressionAlgorithm.DEFLATE) daje w wyniku takie samo działanie jak wywołanie metody deflate() . W programie Flash Player 11.3 i środowisku AIR 3.3 dodano obsługę algorytmu LZMA. Do korzystania z kompresji LZMA jest wymagana podana lub wyższa wersja odtwarzacza.
|
Powiązane elementy interfejsu API
deflate | () | metoda |
public function deflate():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Kompresuje tablicę bajtów przy użyciu algorytmu kompresji deflate. Cała tablica bajtów do skompresowania.
Po wywołaniu właściwość length
obiektu ByteArray zostanie ustawiona na nową długość. Właściwość position
została ustawiona na końcu tablicy bajtów.
Algorytm kompresji deflate został opisany na stronie: http://www.ietf.org/rfc/rfc1951.txt.
Aby użyć formatu deflate do kompresji danych instancji ByteArray do określonego formatu, takiego jak gzip lub zip, nie wystarczy wywołać metody deflate()
. Należy utworzyć strukturę obiektu ByteArray zgodnie ze specyfikacją formatu kompresji, łącznie z odpowiednimi metadanymi, a także danymi skompresowanymi uzyskanymi za pomocą formatu deflate. I podobnie — w celu dekodowania danych skompresowanych w formacie, takim jak gzip lub zip, nie wystarczy wywołać metody inflate()
dla danych. Najpierw należy oddzielić metadane od danych skompresowanych, a następnie można użyć formatu deflate w celu dokonania dekompresji skompresowanych danych.
Powiązane elementy interfejsu API
inflate | () | metoda |
public function inflate():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 10 |
Dekompresuje tablicę bajtów przy użyciu algorytmu kompresji deflate. Należy zastosować ten sam algorytm, który był stosowany podczas kompresowania tablicy bajtów.
Po wywołaniu właściwość length
obiektu ByteArray zostanie ustawiona na nową długość. Dla właściwości position
ustawiono wartość 0.
Algorytm kompresji deflate został opisany na stronie: http://www.ietf.org/rfc/rfc1951.txt.
W celu zdekodowania danych skompresowanych w formacie, który korzysta z algorytmu kompresji deflate (np. format gzip lub zip), wywołanie jedynie metody inflate()
dla obiektu ByteArray zawierającego dane formatu kompresji nie będzie wystarczające. Najpierw należy oddzielić metadane, które stanowią część formatu skompresowanych danych, od rzeczywistych skompresowanych danych. Więcej informacji zawiera opis metody compress()
.
Zgłasza
IOError — Dane nie są poprawnymi danymi skompresowanymi; nie zostały skompresowane przy użyciu tego samego algorytmu kompresowania.
|
Powiązane elementy interfejsu API
readBoolean | () | metoda |
public function readBoolean():Boolean
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów wartość typu Boolean. Po odczytaniu jednego bajtu metoda zwraca true
, jeśli bajt jest wartością niezerową; w przeciwnym wypadku false
.
Boolean — Zwraca wartość true , jeśli wartość jest niezerowa — w przeciwnym wypadku false .
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readByte | () | metoda |
public function readByte():int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów bajt ze znakiem.
Zwrócona wartość należy do zakresu od –128 do 127.
Zwracaint — Liczba całkowita z zakresu od -128 do 127.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readBytes | () | metoda |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Pozwala odczytać ze strumienia bajtów liczbę bajtów określoną przez parametr lenght
. Bajty są odczytywane do obiektu ByteArray określonego przez parametr bytes
, a następnie bajty są zapisywane do docelowej tablicy ByteArray począwszy od pozycji określonej przez parametr offset
.
Parametry
bytes:ByteArray — Obiekt ByteArray, do którego nastąpi odczyt danych.
| |
offset:uint (default = 0 ) — Przesunięcie (pozycja) (bytes ), od którego powinny być zapisywane odczytane dane.
| |
length:uint (default = 0 ) — Liczba bajtów do odczytania. Domyślna wartość 0 powoduje odczyt wszystkich dostępnych danych.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
| |
RangeError — Suma podanego przesunięcia i długości jest większa niż wartość maksymalna dla typu uint.
|
readDouble | () | metoda |
public function readDouble():Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów liczbę zmiennoprzecinkową o podwójnej precyzji (64 bity, IEEE 754).
ZwracaNumber — Liczba zmiennoprzecinkowa o podwójnej precyzji (64-bitowa).
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readFloat | () | metoda |
public function readFloat():Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów liczbę zmiennoprzecinkową o pojedynczej precyzji (32 bity, IEEE 754).
ZwracaNumber — Liczba zmiennoprzecinkowa o pojedynczej precyzji (32-bitowa).
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readInt | () | metoda |
public function readInt():int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów 32-bitową liczbę całkowitą ze znakiem.
Zwrócona wartość należy do zakresu od –2147483648 do 2147483647.
Zwracaint — 32-bitowa liczba całkowita ze znakiem z zakresu od -2147483648 do 2147483647.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readMultiByte | () | metoda |
public function readMultiByte(length:uint, charSet:String):String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów wielobajtowy ciąg o określonej długości, korzysając z określonego zestawu znaków.
Parametry
length:uint — Ilość bajtów do odczytu ze strumienia bajtów.
| |
charSet:String — Ciąg znaków oznaczający zestaw znaków, który ma być używany do interpretacji bajtów. Dozwolone zestawy znaków to: „shift-jis” , „cn-gb” , „iso-8859-1” i inne. Pełną listę zawiera sekcja Obsługiwane zestawy znaków.
Uwaga: Jeżeli wartość parametru |
String — Ciąg znaków kodowany systemem UTF-8.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readObject | () | metoda |
public function readObject():*
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta z tablicy bajtów obiekt zakodowany w formacie serializowanym AMF.
Zwraca* — Obiekt w postaci innej niż serializowana.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
Powiązane elementy interfejsu API
readShort | () | metoda |
public function readShort():int
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów 16-bitową liczbę całkowitą ze znakiem.
Zwrócona wartość należy do zakresu od -32768 do 32767.
Zwracaint — 16-bitowa liczba całkowita ze znakiem z zakresu od -32768 do 32767.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readUnsignedByte | () | metoda |
public function readUnsignedByte():uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów bajt bez znaku.
Zwrócona wartość należy do zakresu od 0 do 255.
Zwracauint — 32-bitowa liczba całkowita bez znaku z zakresu od 0 do 255.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readUnsignedInt | () | metoda |
public function readUnsignedInt():uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów 32-bitową liczbę całkowitą bez znaku.
Zwrócona wartość należy do zakresu od 0 do 4294967295.
Zwracauint — 32-bitowa liczba całkowita bez znaku z zakresu od 0 do 4294967295.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readUnsignedShort | () | metoda |
public function readUnsignedShort():uint
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów 16-bitową liczbę całkowitą bez znaku.
Zwrócona wartość należy do zakresu od 0 do 65535.
Zwracauint — 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65535.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
readUTF | () | metoda |
public function readUTF():String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów ciąg znaków UTF-8. Zakłada się, że ciąg jest poprzedzony prefiksem w postaci liczby typu short bez znaku, która określa długość ciągu w bajtach.
ZwracaString — Ciąg znaków zakodowany w systemie UTF-8.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
Powiązane elementy interfejsu API
readUTFBytes | () | metoda |
public function readUTFBytes(length:uint):String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Czyta ze strumienia bajtów sekwencję bajtów UTF-8 określoną przez parametr length
, a zwraca ciąg znaków.
Parametry
length:uint — Wartość short bez znaku określająca długość bajtów UTF-8.
|
String — Ciąg znaków złożony z bajtów UTF-8, o określonej długości.
|
Zgłasza
EOFError — Brak wystarczającej ilości danych do odczytania.
|
toJSON | () | metoda |
public function toJSON(k:String):*
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3, Flash Lite 4 |
Dostarcza możliwą do przesłonięcia metodę, która pozwala na dostosowywanie kodowania JSON wartości w obiekcie ByteArray.
Metoda JSON.stringify()
szuka metody toJSON()
w każdym obiekcie, który przegląda. Jeżeli metoda toJSON()
zostanie odnaleziona, metoda JSON.stringify()
wywołuję ją dla każdej wartości, którą napotka, przekazując klucz będący w parze z tą wartością.
Obiekt ByteArray dostarcza domyślną implementację metody toJSON()
zwracającą po prostu nazwę klasy. Zawartość każdego obiektu ByteArray wymaga interpretacji, dlatego klienci, którzy chcą eksportować obiekty ByteArray do klasy JSON, muszą dostarczyć swoje własne implementacje. Można to zrobić, ponownie definiując metodę toJSON()
prototypu klasy.
Metoda toJSON()
może zwracać wartość dowolnego typu. W przypadku zwrócenia obiektu metoda stringify()
przeszukuje rekurencyjnie ten obiekt. Jeżeli metoda toJSON()
zwraca ciąg, to metoda stringify()
nie działania rekurencyjnie i kontynuuje przeglądanie.
Parametry
k:String — Klucz z pary klucz-wartość napotkany przez metodę JSON.stringify() podczas przeglądania tego obiektu.
|
* — Ciąg nazwy klasy.
|
Powiązane elementy interfejsu API
toString | () | metoda |
public function toString():String
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Konwertuje tablicę bajtów na ciąg znaków. Jeśli dane w tablicy rozpoczynają się znacznikiem kolejności bajtów Unicode, aplikacja będzie uwzględniała ten znacznik podczas konwertowania ciągu znaków. Jeśli dla właściwości System.useCodePage
ustawiona jest wartość true
, podczas konwersji aplikacja będzie traktować dane w tablicy jako podlegające bieżącej stronie kodowej systemu.
String — Ciąg znaków reprezentujący tablicę znaków.
|
uncompress | () | metoda |
public function uncompress(algorithm:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Dekompresuje tablicę bajtów. Po wywołaniu właściwość length
obiektu ByteArray zostanie ustawiona na nową długość. Dla właściwości position
ustawiono wartość 0.
Podczas dekompresji należy zastosować ten sam algorytm, który był używany podczas kompresowania tablicy bajtów. Aby określić algorytm dekompresji, należy przekazać wartość (zdefiniowaną w klasie CompressionAlgorithm) jako parametr algorithm
. Są obsługiwane następujące algorytmy:
Format danych skompresowanych zlib został opisany na stronie: http://www.ietf.org/rfc/rfc1950.txt.
Algorytm kompresji deflate został opisany na stronie: http://www.ietf.org/rfc/rfc1951.txt.
Opis algorytmu kompresji LZMA można znaleźć na stronie http://www.7-zip.org/7z.html.
W celu zdekodowania danych skompresowanych w formacie, który korzysta z algorytmu kompresji deflate (np. format gzip lub zip), wywołanie metody uncompress(CompressionAlgorithm.DEFLATE)
dla obiektu ByteArray zawierającego dane formatu kompresji nie będzie wystarczające. Najpierw należy oddzielić metadane, które stanowią część formatu skompresowanych danych, od rzeczywistych skompresowanych danych. Więcej informacji zawiera opis metody compress()
.
Parametry
algorithm:String (default = NaN ) — Algorytm kompresowania używany do dekompresowania. Musi to być ten sam algorytm kompresowania, który był używany do kompresowania danych. Poprawne wartości są definiowane jako stałe w klasie CompressionAlgorithm. Domyślnie używany jest format zlib. W programie Flash Player 11.3 i środowisku AIR 3.3 dodano obsługę algorytmu LZMA. Do korzystania z kompresji LZMA jest wymagana podana lub wyższa wersja odtwarzacza.
|
Zgłasza
IOError — Dane nie są poprawnymi danymi skompresowanymi; nie zostały skompresowane przy użyciu tego samego algorytmu kompresowania.
|
Powiązane elementy interfejsu API
writeBoolean | () | metoda |
public function writeBoolean(value:Boolean):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje wartość typu Boolean. Zapisany zostanie pojedynczy bajt zgodnie z parametrem value
— 1 dla true
lub 0 dla false
.
Parametry
value:Boolean — Wartość typu Boolean, która określa zapisywany bajt. Jeśli parametr ma wartość true , metoda zapisuje 1; w przypadku false metoda zapisuje 0.
|
writeByte | () | metoda |
public function writeByte(value:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje bajt w strumieniu bajtów.
Używanych jest 8 najmłodszych bitów parametru. 24 starsze bity są ignorowane.
Parametry
value:int — 32-bitowa liczba całkowita. Do strumienia bajtów zostaje zapisanych 8 najmłodszych bitów.
|
writeBytes | () | metoda |
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje do strumienia bajtów sekwencję o długości length
bajtów z określonej tablicy bajtów (zmienna bytes
), zaczynając od podanego bajtu początkowego (zmienna offset
, przy indeksie liczonym od zera).
Jeśli parametr length
został pominięty, używana jest domyślna długość 0; metoda zapisuje cały bufor począwszy od miejsca offset
. Jeśli parametr offset
również został pominięty, zapisany zostanie cały bufor.
Jeśli wartość parametru offset
lub length
jest poza zakresem, parametry zostaną ograniczone do początku i końca tablicy bytes
.
Parametry
bytes:ByteArray — Obiekt ByteArray.
| |
offset:uint (default = 0 ) — Indeks zliczany od zera, który wskazuje pozycję w tablicy, od której rozpocznie się zapisywanie.
| |
length:uint (default = 0 ) — Wartość integer bez znaku, która wskazuje odległość, do jakiej zostanie zapisany bufor.
|
writeDouble | () | metoda |
public function writeDouble(value:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów liczbę zmiennoprzecinkową o podwójnej precyzji (64 bity, IEEE 754).
Parametry
value:Number — Liczba zmiennoprzecinkowa o podwójnej precyzji (64-bitowa).
|
writeFloat | () | metoda |
public function writeFloat(value:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów liczbę zmiennoprzecinkową o pojedynczej precyzji (32 bity, IEEE 754).
Parametry
value:Number — Liczba zmiennoprzecinkowa o pojedynczej precyzji (32-bitowa).
|
writeInt | () | metoda |
writeMultiByte | () | metoda |
public function writeMultiByte(value:String, charSet:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów wielobajtowy ciąg znaków, przy użyciu określonego zestawu znaków.
Parametry
value:String — Wartość ciągu znaków przeznaczona do zapisu.
| |
charSet:String — Ciąg znaków oznaczający zestaw znaków, który ma być używany. Dozwolone zestawy znaków to: „shift-jis” , „cn-gb” , „iso-8859-1” i inne. Pełną listę zawiera sekcja Obsługiwane zestawy znaków.
|
writeObject | () | metoda |
writeShort | () | metoda |
public function writeShort(value:int):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów 16-bitową liczbę całkowitą. Używanych jest 16 najmłodszych bitów parametru. 16 bitów starszych zostaje zignorowane.
Parametry
value:int — 32-bitowa liczba całkowita, której 16 młodszych bajtów zostaje zapisanych do strumieni bajtów.
|
writeUnsignedInt | () | metoda |
public function writeUnsignedInt(value:uint):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów 32-bitową liczbę całkowitą bez znaku.
Parametry
value:uint — Liczba całkowita bez znaku przeznaczona do zapisania w strumieniu bajtów.
|
writeUTF | () | metoda |
public function writeUTF(value:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów ciąg znaków UTF-8. Długość ciągu znaków UTF-8 w bajtach jest zapisywana na początku jako 16-bitowa wartość integer, a po niej następują bajty reprezentujące znaki ciągu znaków.
Parametry
value:String — Wartość ciągu znaków przeznaczona do zapisu.
|
Zgłasza
RangeError — Jeśli długość jest większa niż 65535.
|
writeUTFBytes | () | metoda |
public function writeUTFBytes(value:String):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zapisuje w strumieniu bajtów ciąg znaków UTF-8. Podobnie, jak metoda writeUTF()
, ale metoda writeUTFBytes()
nie umieszcza przed ciągiem znaków słowa o długości 16 bitów.
Parametry
value:String — Wartość ciągu znaków przeznaczona do zapisu.
|
ByteArrayExample
w celu zapisania wartości typu Boolean oraz zmiennoprzecinkowej (o podwójnej precyzji) reprezentacji liczby pi w tablicy bajtów. W tym celu należy wykonać następujące czynności:
- Zadeklaruj nową instancję obiektu ByteArray:
byteArr
. - Zapisz wartość (typu Boolean)
false
w postaci równoważnika bajtowego i sprawdź jego długość, a następnie odczytaj. - Zapisz zmiennoprzecinkowy równoważnik (o podwójnej precyzji) matematycznej wartości liczby pi.
- Odczytaj każdy z dziewięciu bajtów zapisanych do tablicy bajtów.
Uwaga: wywołanie metody trace()
dla bajtu powoduje wyświetlenie dziesiętnego równoważnika bajtów zapisanych w tablicy bajtów.
Na końcu został dodany segment kodu — sprawdź zakończenie błędów pliku, aby upewnić się, że strumień bajtów nie został odczytany poza koniec.
package { import flash.display.Sprite; import flash.utils.ByteArray; import flash.errors.EOFError; public class ByteArrayExample extends Sprite { public function ByteArrayExample() { var byteArr:ByteArray = new ByteArray(); byteArr.writeBoolean(false); trace(byteArr.length); // 1 trace(byteArr[0]); // 0 byteArr.writeDouble(Math.PI); trace(byteArr.length); // 9 trace(byteArr[0]); // 0 trace(byteArr[1]); // 64 trace(byteArr[2]); // 9 trace(byteArr[3]); // 33 trace(byteArr[4]); // 251 trace(byteArr[5]); // 84 trace(byteArr[6]); // 68 trace(byteArr[7]); // 45 trace(byteArr[8]); // 24 byteArr.position = 0; try { trace(byteArr.readBoolean() == false); // true } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } try { trace(byteArr.readDouble()); // 3.141592653589793 } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } try { trace(byteArr.readDouble()); } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } } } }
Tue Jun 12 2018, 12:06 PM Z