拡張の 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();