パッケージ | flash.utils |
クラス | public class ByteArray |
継承 | ByteArray Object |
実装 | IDataInput, IDataOutput |
サブクラス | ByteArrayAsset |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
注意:ByteArray クラスは、バイトレベルでデータにアクセスする必要がある上級の開発者を対象としています。
メモリ内データはバイトの詰め込み配列(最もコンパクトなデータ型の表現)ですが、ByteArray クラスのインスタンスは標準 []
(配列アクセス)演算子を使用して操作できます。また、URLStream および Socket クラスと同じメソッドを使用し、メモリ内ファイルとして読み取りおよび書き込みを行うことができます。
さらに、zlib、deflate および lzma の圧縮と解凍がサポートされ、Action Message Format (AMF) オブジェクトの直列化もサポートされます。
ByteArray オブジェクトでは、複数のワーカーインスタンス間で、基になるメモリを共有できます。そのためには、shareable
プロパティを true
に設定します。
ByteArray クラスを使用すると、以下の操作が可能です。
- カスタム プロトコルを作成してサーバーに接続
- 独自の URLEncoder および URLDecoder の作成
- 独自の AMF および Remoting パケットの作成
- データ型を使用したデータのサイズの最適化
- ファイルからロードされたバイナリデータを操作
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
bytesAvailable : uint [読み取り専用]
バイト配列の現在の位置から最後までの読み取り可能なデータのバイト数です。 | ByteArray | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
defaultObjectEncoding : uint [静的]
新しい ByteArray インスタンスに使用する ByteArray クラス用のデフォルトオブジェクトのエンコードを表します。 | ByteArray | ||
endian : String
データのバイト順序(Endian.BIG_ENDIAN または Endian.LITTLE_ENDIAN)を変更するか、読み取ります。 | ByteArray | ||
length : uint
ByteArray オブジェクトのバイト単位の長さです。 | ByteArray | ||
objectEncoding : uint
ByteArray インスタンスへの書き込み、または ByteArray インスタンスからの読み取り時の、ActionScript 3.0、ActionScript 2.0、または ActionScript 1.0 の形式を使用する必要があるかどうかの特定に使用されます。 | ByteArray | ||
position : uint
ByteArray オブジェクト内でのファイルポインターの現在の位置をバイト単位で移動するか、または現在の位置をバイト単位で返します。 | ByteArray | ||
shareable : Boolean
バイト配列の基になるメモリを共有可能にするかどうかを指定します。 | ByteArray |
メソッド | 定義元 | ||
---|---|---|---|
バイトの詰め込み配列を表す ByteArray インスタンスを作成します。これにより、このクラスのメソッドおよびプロパティを使用して、データストレージおよびデータストリームを最適化できます。 | ByteArray | ||
単一のアトミック操作では、このバイト配列の整数値を他の整数値と比較し、一致する場合は、これらのバイトを別の値と入れ替えます。 | ByteArray | ||
単一のアトミック操作では、このバイト配列の長さを指定された値と比較し、一致する場合は、このバイト配列の長さを変更します。 | ByteArray | ||
バイト配列の内容を消去し、長さと位置のプロパティを 0 にリセットします。 | ByteArray | ||
バイト配列を圧縮します。 | ByteArray | ||
deflate 圧縮アルゴリズムを使用してバイト配列を圧縮します。 | ByteArray | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
deflate 圧縮アルゴリズムを使用してバイト配列を圧縮します。 | ByteArray | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
バイトストリームからブール値を読み取ります。 | ByteArray | ||
バイトストリームから符号付きバイトを読み取ります。 | ByteArray | ||
バイトストリームから、length パラメーターで指定したデータバイト数を読み取ります。 | ByteArray | ||
バイトストリームから IEEE 754 倍精度(64 bit)浮動小数点数を読み取ります。 | ByteArray | ||
バイトストリームから IEEE 754 単精度(32 bit)浮動小数点数を読み取ります。 | ByteArray | ||
バイトストリームから符号付き 32 bit 整数を読み取ります。 | ByteArray | ||
指定した文字セットを使用して、バイトストリームから指定した長さのマルチバイトストリングを読み取ります。 | ByteArray | ||
readObject():*
バイト配列から AMF 直列化形式でエンコードされたオブジェクトを読み取ります。 | ByteArray | ||
バイトストリームから符号付き 16 bit 整数を読み取ります。 | ByteArray | ||
バイトストリームから符号なしバイトを読み取ります。 | ByteArray | ||
バイトストリームから符号なし 32 bit 整数を読み取ります。 | ByteArray | ||
バイトストリームから符号なし 16 bit 整数を読み取ります。 | ByteArray | ||
バイトストリームから UTF-8 ストリングを読み取ります。 | ByteArray | ||
バイトストリームまたはバイト配列から、length パラメーターで指定した UTF-8 バイトのシーケンスを読み取り、ストリングを返します。 | ByteArray | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ByteArray オブジェクトの値の JSON エンコーディングをカスタマイズするためのオーバーライド可能なメソッドです。 | ByteArray | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
バイト配列をストリングに変換します。 | ByteArray | ||
バイト配列を解凍します。 | ByteArray | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
ブール値を書き込みます。 | ByteArray | ||
バイトストリームにバイトを書き込みます。 | ByteArray | ||
指定したバイト配列の offset(0 から始まるインデックス値)バイトから開始される length バイトのシーケンス bytes をバイトストリームに書き込みます。 | ByteArray | ||
バイトストリームに IEEE 754 倍精度(64 bit)浮動小数点数を書き込みます。 | ByteArray | ||
バイトストリームに IEEE 754 単精度(32 bit)浮動小数点数を書き込みます。 | ByteArray | ||
バイトストリームに 32 bit 符号付き整数を書き込みます。 | ByteArray | ||
指定した文字セットを使用して、バイトストリームにマルチバイトストリングを書き込みます。 | ByteArray | ||
バイト配列に AMF 直列化形式でオブジェクトを書き込みます。 | ByteArray | ||
バイトストリームに 16 bit 整数を書き込みます。 | ByteArray | ||
バイトストリームに 32 bit 符号なし整数を書き込みます。 | ByteArray | ||
バイトストリームに UTF-8 ストリングを書き込みます。 | ByteArray | ||
バイトストリームに UTF-8 ストリングを書き込みます。 | ByteArray |
bytesAvailable | プロパティ |
defaultObjectEncoding | プロパティ |
defaultObjectEncoding:uint
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
新しい ByteArray インスタンスに使用する ByteArray クラス用のデフォルトオブジェクトのエンコードを表します。新しい ByteArray インスタンスを作成すると、そのインスタンスのエンコードが defaultObjectEncoding
の値で開始します。defaultObjectEncoding
プロパティは ObjectEncoding.AMF3
に初期化されます。
バイナリデータからオブジェクトの書き込みまたは読み取りをすると、objectEncoding
値を使用して、ActionScript 3.0、ActionScript 2.0、または ActionScript 1.0 の形式を使用する必要があるかどうかが特定されます。この値は、ObjectEncoding クラスの定数です。
実装
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
関連する API エレメント
endian | プロパティ |
length | プロパティ |
objectEncoding | プロパティ |
objectEncoding:uint
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ByteArray インスタンスへの書き込み、または ByteArray インスタンスからの読み取り時の、ActionScript 3.0、ActionScript 2.0、または ActionScript 1.0 の形式を使用する必要があるかどうかの特定に使用されます。この値は、ObjectEncoding クラスの定数です。
実装
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
関連する API エレメント
position | プロパティ |
shareable | プロパティ |
shareable:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.5, AIR 3.5 |
バイト配列の基になるメモリを共有可能にするかどうかを指定します。共有可能バイト配列の場合、そのバイト配列を参照するすべてのワーカーのすべての ByteArray インスタンスで、基になる同じシステムメモリが使用されます。デフォルト値は false
で、基になるメモリがワーカー間で共有されないことを示します。
このプロパティは、Worker.setSharedProperty()
メソッドまたは MessageChannel.send()
メソッドを使用してワーカーに渡された場合に、ランタイムがこのバイト配列で何を処理するかにも影響します。
- Not shareable:このプロパティが
false
の場合、バイト配列がワーカーに渡されると、ランタイムは、重複するバイト配列の内容を格納するメモリの新しいセグメントの割り当てを含む、バイト配列の完全なコピーを作成します。 - Shareable:このプロパティが
true
の場合、バイト配列がワーカーに渡されると、ランタイムは、元の ByteArray インスタンスおよび 2 番目のワーカー用に作成された新しい ByteArray インスタンスの両方の内容に使用する記憶領域のバッファーとして、同じ基になるメモリを使用します。つまり、両方の ByteArray インスタンスには同じ基になるバイト配列への参照が含まれます。
同時に複数のワーカーから共有バイト配列にアクセスする機能によって、両方のワーカーがバイト配列の基になるメモリを同時に操作するという好ましくない状況になる可能性があります。いくつかのメカニズムを使用して、共有メモリへのアクセスを制御できます。
- ByteArray クラスの
atomicCompareAndSwapIntAt()
およびatomicCompareAndSwapLength()
メソッドによって提供される比較および入れ替えメカニズム - (flash.concurrent パッケージの)Mutex および Condition クラスによって提供される特別なメカニズム
このプロパティを true
にする設定は、このバイト配列をワーカーに渡す後続のコードにのみ影響します。既にワーカーに渡されたこのバイト配列のすべてのコピーは、別のコピーとして存在し続けます。
以前 true
だったこのプロパティを false
に設定すると、バイト配列用の基になるメモリがシステムメモリの新しいセグメントに即座にコピーされます。その時点から、この ByteArray インスタンスは、新しい基になるメモリを使用するようになります。その結果、このバイト配列の基になるメモリは、たとえ以前に共有されていたとしても、他のワーカーと共有されなくなります。それ以降、このバイト配列をワーカーに渡すと、その基になるメモリは、shareable
プロパティが false
であるすべての ByteArray オブジェクトと同様にコピーされます。
デフォルト値: false。
実装
public function get shareable():Boolean
public function set shareable(value:Boolean):void
関連する API エレメント
ByteArray | () | コンストラクター |
public function ByteArray()
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バイトの詰め込み配列を表す ByteArray インスタンスを作成します。これにより、このクラスのメソッドおよびプロパティを使用して、データストレージおよびデータストリームを最適化できます。
atomicCompareAndSwapIntAt | () | メソッド |
public function atomicCompareAndSwapIntAt(byteIndex:int, expectedValue:int, newValue:int):int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.5, AIR 3.5 |
単一のアトミック操作では、このバイト配列の整数値を他の整数値と比較し、一致する場合は、これらのバイトを別の値と入れ替えます。
このメソッドは、基になるメモリが複数のワーカー間で共有されているバイト配列(ByteArray インスタンスの shareable
プロパティが true
)と共に使用されることを想定しています。次の一連の手順を実行します。
byteIndex
引数に指定されたインデックス(バイト単位)から始まるこのバイト配列から整数値を読み取ります。- このバイト配列からの実際の値と
expectedValue
引数に渡された値を比較します。 - 2 つの値が等しい場合は、
newValue
引数の値を、byteIndex
パラメーターで指定された場所のバイト配列に書き込み、それらのバイトに以前含まれていた値(手順 1 で読み取った値)を返します。 - それ以外の場合は、バイト配列の内容は変更されず、メソッドはバイト配列から読み取られた実際の値を返します。
これらすべての手順は、1 つのアトミックハードウェアトランザクションで実行されます。これによって、比較および入れ換え操作中に、他のワーカーからの操作によるバイト配列の内容の変更が行われていないことが保証されます。
パラメーター
byteIndex:int — 比較する整数が読み取られるインデックス位置、および比較結果が一致する場合に newValue 値が書き込まれるインデックス位置(バイト単位)。この値は、4 の倍数である必要があります。
| |
expectedValue:int — 指定されたインデックスにあるバイト配列の内容と一致することが想定される値
| |
newValue:int — 比較結果が一致する場合に、指定されたインデックスにあるバイト配列の内容を置き換える新しい値
|
int — 指定された場所にある以前の値(比較結果が一致する場合)、または、バイト配列からの実際の値(実際の値と想定した値が一致しない場合)
|
例外
ArgumentError — byteIndex 値が 4 の倍数でない場合、または負の場合
|
関連する API エレメント
atomicCompareAndSwapLength | () | メソッド |
public function atomicCompareAndSwapLength(expectedLength:int, newLength:int):int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11.5, AIR 3.5 |
単一のアトミック操作では、このバイト配列の長さを指定された値と比較し、一致する場合は、このバイト配列の長さを変更します
このメソッドは、基になるメモリが複数のワーカー間で共有されているバイト配列(ByteArray インスタンスの shareable
プロパティが true
)と共に使用されることを想定しています。以下を実行します。
- ByteArray インスタンスの整数の
length
プロパティを読み取ります。 - 長さを
expectedLength
引数に渡された値と比較します。 - 2 つの値が等しい場合は、バイト配列のサイズを増大または縮小するように、バイト配列の長さを
newLength
パラメーターとして渡した値に変更します。 - それ以外の場合は、バイト配列は変更されません。
これらすべての手順は、1 つのアトミックハードウェアトランザクションで実行されます。これによって、比較およびサイズ変更操作中に、他のワーカーからの操作によるバイト配列の内容の変更が行われていないことが保証されます。
パラメーター
expectedLength:int — ByteArray の length プロパティの想定した値です。指定された値と実際の値が一致する場合、バイト配列の長さは変更されます。
| |
newLength:int — 比較に成功した場合のバイト配列の新しい length 値
|
int — 変更されているかどうかに関係なく、ByteArray の以前の length 値
|
関連する API エレメント
clear | () | メソッド |
public function clear():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
バイト配列の内容を消去し、長さ
と位置
のプロパティを 0 にリセットします。このメソッドを明示的に呼び出すと、ByteArray インスタンスによって使用されるメモリを解放します。
compress | () | メソッド |
public function compress(algorithm:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
バイト配列を圧縮します。バイト配列全体が圧縮されます。呼び出し後、ByteArray の length
プロパティが新しい長さに設定されます。position
プロパティがバイト配列の末尾に設定されます。
圧縮アルゴリズムを指定するには、値(CompressionAlgorithm クラスに定義された値)を algorithm
パラメーターに渡します。サポートされるアルゴリズムは次のとおりです。
zlib 圧縮データ形式の詳細については、http://www.ietf.org/rfc/rfc1950.txt の説明を参照してください。
deflate 圧縮アルゴリズムについては、http://www.ietf.org/rfc/rfc1951.txt の説明を参照してください。
lzma 圧縮アルゴリズムについては、http://sevenzip.sourceforge.jp/ の説明を参照してください。
deflate 圧縮アルゴリズムは、zlib、gzip、一部の zip 実装などの様々な圧縮形式で使用されています。これらの圧縮形式のいずれかを使用してデータを圧縮した場合、その圧縮形式データ(.zip ファイルなど)には、元のデータの圧縮されたバージョンに加えてメタデータ情報も保存されます。各種ファイル形式に含まれるメタデータの種類の例としては、ファイル名、ファイル修正日時、元のファイルサイズ、オプションのコメント、チェックサムデータなどがあります。
例えば、zlib アルゴリズムを使用して ByteArray を圧縮すると、生成された ByteArray の構造はある特定のフォーマットになります。特定のバイト位置に圧縮データに関するメタデータが格納され、それ以外のバイト位置に元の ByteArray データの実際に圧縮されたバージョンが格納されます。zlib 圧縮データ形式の仕様で規定されているように、このバイト部分(つまり、元のデータの圧縮されたバージョンを含む部分)は deflate アルゴリズムを使用して圧縮されます。したがって、それらのバイトは、元の ByteArray で compress(air.CompressionAlgorithm.DEFLATE)
を呼び出した結果と同じです。ただし、compress(air. CompressionAlgorithm.ZLIB)
の結果には追加のメタデータが含まれています。それに対して、compress(CompressionAlgorithm.DEFLATE)
の結果には元の ByteArray データの圧縮されたバージョン以外のものは含まれていません。
したがって、deflate 形式を使用して ByteArray インスタンスのデータを gzip や zip などの特定の形式に圧縮する場合は、単に compress(CompressionAlgorithm.DEFLATE)
を呼び出すだけでは不十分です。圧縮形式の仕様に従い、適切なメタデータと deflate 形式で圧縮されたデータで構成された ByteArray を作成する必要があります。同様に、gzip や zip などの形式で圧縮されたデータを解凍する場合、単にそのデータに対して uncompress(CompressionAlgorithm.DEFLATE)
を呼び出すだけでは不十分です。まず、圧縮データからメタデータを分離してから、deflate 形式を使用して圧縮データを解凍する必要があります。
パラメーター
algorithm:String (default = NaN ) — 圧縮時に使用する圧縮アルゴリズムです。有効な値は、CompressionAlgorithm クラスに定数で定義されています。デフォルトでは zlib 形式が使用されます。 compress(CompressionAlgorithm.DEFLATE) の呼び出しは、deflate() メソッドを呼び出した場合と同じ効果があります。lzma アルゴリズムのサポートは、Flash Player 11.3 および AIR 3.3 で追加されました。lzma 圧縮を使用するには、これらのバージョン以降が必要です。
|
関連する API エレメント
deflate | () | メソッド |
public function deflate():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5, Flash Lite 4 |
deflate 圧縮アルゴリズムを使用してバイト配列を圧縮します。バイト配列全体が圧縮されます。
呼び出し後、ByteArray の length
プロパティが新しい長さに設定されます。position
プロパティがバイト配列の末尾に設定されます。
deflate 圧縮アルゴリズムについては、http://www.ietf.org/rfc/rfc1951.txt の説明を参照してください。
deflate 形式を使用して ByteArray インスタンスのデータを gzip や zip などの特定の形式に圧縮する場合は、単に deflate()
を呼び出すだけでは目的を達することはできません。圧縮形式の仕様に従い、適切なメタデータと deflate 形式で圧縮されたデータで構成された ByteArray を作成する必要があります。同様に、gzip や zip などの形式で圧縮されたデータを解凍する場合、単にそのデータに対して inflate()
を呼び出すだけでは不十分です。まず、圧縮データからメタデータを分離してから、deflate 形式を使用して圧縮データを解凍する必要があります。
関連する API エレメント
inflate | () | メソッド |
public function inflate():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 10 |
deflate 圧縮アルゴリズムを使用してバイト配列を圧縮します。同じアルゴリズムを使用してバイト配列が圧縮されている必要があります。
呼び出し後、ByteArray の length
プロパティが新しい長さに設定されます。position
プロパティが 0 に設定されます。
deflate 圧縮アルゴリズムについては、http://www.ietf.org/rfc/rfc1951.txt の説明を参照してください。
deflate 圧縮アルゴリズムを使用する形式で圧縮されたデータ(gzip 形式や zip 形式のデータ)を解凍する場合、圧縮形式データを含む ByteArray に対して単に inflate()
を呼び出してもデータは解凍されません。まず、圧縮データ形式の構成要素であるメタデータを実際の圧縮データから分離する必要があります。詳細については、compress()
メソッドの説明を参照してください。
例外
IOError — データが有効な圧縮データではありません。指定された圧縮アルゴリズムと同じアルゴリズムを使用して圧縮されていません。
|
関連する API エレメント
readBoolean | () | メソッド |
readByte | () | メソッド |
readBytes | () | メソッド |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バイトストリームから、length
パラメーターで指定したデータバイト数を読み取ります。バイトは、bytes
パラメーターによって指定された ByteArray オブジェクトに読み取られ、offset
によって指定された位置から始まるターゲット ByteArray に書き込まれます。
パラメーター
bytes:ByteArray — データの読み込み先の ByteArray オブジェクトです。
| |
offset:uint (default = 0 ) — 読み取ったデータが書き込まれる bytes 内のオフセット(位置)です。
| |
length:uint (default = 0 ) — 読み取るバイト数です。デフォルト値の 0 に設定すると、すべてのデータが読み取られます。
|
例外
EOFError — 読み取り可能なデータが不足しています。
| |
RangeError — 入力されたオフセットと長さの値を結合すると、単位の最大値よりも大きくなります。
|
readDouble | () | メソッド |
readFloat | () | メソッド |
readInt | () | メソッド |
readMultiByte | () | メソッド |
public function readMultiByte(length:uint, charSet:String):String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定した文字セットを使用して、バイトストリームから指定した長さのマルチバイトストリングを読み取ります。
パラメーター
length:uint — バイトストリームから読み取るバイト数です。
| |
charSet:String — バイトの解釈に使用する文字セットを表すストリングです。文字セットのストリングには、"shift-jis" 、"cn-gb" 、および "iso-8859-1" などがあります。完全な一覧については、「サポートされている文字セット」を参照してください。
注意: |
String — UTF-8 エンコードされたストリングです。
|
例外
EOFError — 読み取り可能なデータが不足しています。
|
readObject | () | メソッド |
readShort | () | メソッド |
readUnsignedByte | () | メソッド |
readUnsignedInt | () | メソッド |
readUnsignedShort | () | メソッド |
readUTF | () | メソッド |
readUTFBytes | () | メソッド |
public function readUTFBytes(length:uint):String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バイトストリームまたはバイト配列から、length
パラメーターで指定した UTF-8 バイトのシーケンスを読み取り、ストリングを返します。
パラメーター
length:uint — UTF-8 バイトの長さを示す符号なし short です。
|
String — 指定した長さの UTF-8 バイトで構成するストリングです。
|
例外
EOFError — 読み取り可能なデータが不足しています。
|
toJSON | () | メソッド |
public function toJSON(k:String):*
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 3, Flash Lite 4 |
ByteArray オブジェクトの値の JSON エンコーディングをカスタマイズするためのオーバーライド可能なメソッドです。
JSON.stringify()
メソッドは、スキャンする各オブジェクトの toJSON()
メソッドを検索します。toJSON()
が見つかれば、JSON.stringify()
で検出された値ごとに toJSON() メソッドが呼び出され、値のペアとなっているキーが渡されます。
ByteArray には、単純にクラス名を返すデフォルトの toJSON()
実装が含まれています。ByteArray では内容を解釈する必要があるので、ByteArray オブジェクトを JSON に書き出す場合は、独自の実装を行う必要があります。このためには、クラスのプロトタイプの toJSON()
メソッドを再定義します。
toJSON()
メソッドは、あらゆるタイプの値を返すことができます。オブジェクトを返す場合は、stringify()
でそのオブジェクトが再帰的に処理されます。toJSON()
が文字列を返す場合は、stringify()
で再帰的な処理は行われず、オブジェクトをスキャンする処理が続行されます。
パラメーター
k:String — JSON.stringify() がこのオブジェクトをスキャンして検出されたキーと値のペアのキーです。
|
* — クラス名の文字列です。
|
関連する API エレメント
toString | () | メソッド |
uncompress | () | メソッド |
public function uncompress(algorithm:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バイト配列を解凍します。呼び出し後、ByteArray の length
プロパティが新しい長さに設定されます。position
プロパティが 0 に設定されます。
uncompress と同じアルゴリズムを使用してバイト配列が圧縮されている必要があります。非圧縮アルゴリズムを指定するには、値(CompressionAlgorithm クラスに定義された値)を algorithm
パラメーターに渡します。サポートされるアルゴリズムは次のとおりです。
zlib 圧縮データ形式の詳細については、http://www.ietf.org/rfc/rfc1950.txt の説明を参照してください。
deflate 圧縮アルゴリズムについては、http://www.ietf.org/rfc/rfc1951.txt の説明を参照してください。
lzma 圧縮アルゴリズムについては、http://sevenzip.sourceforge.jp/ の説明を参照してください。
deflate 圧縮アルゴリズムを使用する形式で圧縮されたデータ(gzip 形式や zip 形式のデータ)を解凍する場合、圧縮形式データを含む ByteArray に対して uncompress(CompressionAlgorithm.DEFLATE)
を呼び出してもデータは解凍されません。まず、圧縮データ形式の構成要素であるメタデータを実際の圧縮データから分離する必要があります。詳細については、compress()
メソッドの説明を参照してください。
パラメーター
algorithm:String (default = NaN ) — 解凍時に使用する圧縮アルゴリズムです。データの圧縮に使用されたものと同じ圧縮アルゴリズムを指定する必要があります。有効な値は、CompressionAlgorithm クラスに定数で定義されています。デフォルトでは zlib 形式が使用されます。lzma アルゴリズムのサポートは、Flash Player 11.3 および AIR 3.3 で追加されました。lzma を使用するには、これらのバージョン以降が必要です。
|
例外
IOError — データが有効な圧縮データではありません。指定された圧縮アルゴリズムと同じアルゴリズムを使用して圧縮されていません。
|
関連する API エレメント
writeBoolean | () | メソッド |
public function writeBoolean(value:Boolean):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ブール値を書き込みます。value
パラメーターに従って、1 バイトが書き込まれます。true
の場合は 1、false
の場合は 0 のいずれかが書き込まれます。
パラメーター
value:Boolean — 書き込むバイトを決定するブール値です。このパラメーターが true の場合は 1、false の場合は 0 がメソッドによって書き込まれます。
|
writeByte | () | メソッド |
writeBytes | () | メソッド |
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定したバイト配列の offset
(0 から始まるインデックス値)バイトから開始される length
バイトのシーケンス bytes
をバイトストリームに書き込みます。
length
パラメーターを省略すると、デフォルトの長さの 0 が使用され、メソッドによって offset
から開始されるバッファー全体が書き込まれます。 offset
パラメーターも省略した場合は、バッファー全体が書き込まれます。
offset
または length
が範囲外の場合、これらは bytes
配列の最初と最後に固定されます。
パラメーター
bytes:ByteArray — ByteArray オブジェクトです。
| |
offset:uint (default = 0 ) — 書き込みを開始する配列の位置を示す、0 から始まるインデックスです。
| |
length:uint (default = 0 ) — 書き込むバッファーの長さを示す符号付きの整数です。
|
writeDouble | () | メソッド |
writeFloat | () | メソッド |
writeInt | () | メソッド |
writeMultiByte | () | メソッド |
public function writeMultiByte(value:String, charSet:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指定した文字セットを使用して、バイトストリームにマルチバイトストリングを書き込みます。
パラメーター
value:String — 書き込まれるストリング値です。
| |
charSet:String — 使用する文字セットを表すストリングです。文字セットのストリングには、"shift-jis" 、"cn-gb" 、および "iso-8859-1" などがあります。完全な一覧については、「サポートされている文字セット」を参照してください。
|
writeObject | () | メソッド |
writeShort | () | メソッド |
writeUnsignedInt | () | メソッド |
writeUTF | () | メソッド |
public function writeUTF(value:String):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
バイトストリームに UTF-8 ストリングを書き込みます。最初に UTF-8 ストリングの長さがバイト単位で 16 bit 整数として書き込まれ、その後にストリングの文字を表すバイトが続きます。
パラメーター
value:String — 書き込まれるストリング値です。
|
例外
RangeError — 長さが 65535 よりも大きい場合。
|
writeUTFBytes | () | メソッド |
ByteArrayExample
を使用して、ブールおよび pi の倍精度の浮動小数表現をバイト配列に書き込みます。ここでは以下の手順を実行します。
- 新しい ByteArray オブジェクトインスタンス
byteArr
を宣言します。 - バイトと等価のブール値
false
を書き込み、長さをチェックしてその値を戻します。 - pi の数値と等価の倍精度の浮動小数を書き込みます。
- バイト配列に書き込まれた 9 バイトを 1 つずつ読み出します。
注意:trace()
がバイトに対して呼び出されると、バイト配列に保存された 10 進表現のバイトが出力されます。
コードセグメントが最後に追加され、ファイルの終端エラーをチェックして、バイトストリームが最後まで読み取られないことを確認します。
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, 10:34 AM Z