ActionScript ByteArray オブジェクトの操作

拡張の ActionScript 側と Java 側の間で大量のバイトデータの受け渡しを効率的に行うには、ActionScript ByteArray クラスを使用します。 FREByteArray クラスは、 FREObject を拡張したクラスであり、バイト配列オブジェクトを扱うためのメソッドを備えています。

  • acquire()

  • getLength()

  • getBytes()

  • release()

ByteArray オブジェクト内のバイトデータを Java コードから操作するには、FREByteArray acquire() メソッドを呼び出した後に getBytes() メソッドを使用します。バイトデータの操作が完了した後には、FREByteArray release() メソッドを呼び出します。

acquire() を呼び出してから release() を呼び出すまでの間、FREObject のメソッドを呼び出すことは一切できません(acquire() でロックしたオブジェクトだけでなく、他の FREObject オブジェクトのメソッドも呼び出せません)。これが禁止されているのは、他の呼び出しを実行すると副作用でバイト配列オブジェクトやその内容が無効になってしまう可能性があるからです。

ロックした FREByteArray オブジェクトの bytes フィールドには、 length フィールドに示されている長さを超えるサイズのバイトデータを書き込むことはできません。余分なバイトデータは ActionScript 側で無視されます。

静的ファクトリメソッドの FREByteArray.newByteArray() を使用すると、FREByteArray オブジェクトを新規作成できます。新しいバイト配列の内容は空です。この配列に Java からデータを追加する場合は、前もって ActionScript length プロパティを設定する必要があります。

FREByteArray freByteArray = freByteArray = FREByteArray.newByteArray(); 
freByteArray.setProperty( "length", FREObject.newObject( 12 ) ); 
freByteArray.acquire(); 
ByteBuffer bytes = freByteArray.getBytes(); 
//set the data 
freByteArray.release();