Spring BlazeDS Integrationを使用して、Javaベースのサーバー側とFlexクライアント側があります。それは正常に動作しますが、私は最近サーバー側から音を得たいです。Javaベースのサービスからサウンドを取得する方法
これは、BlazeDS mapping docに続き、JavaがByte []を返すと、私が望むByteArrayに変換されます。だから、MP3ファイルをByteArrayOutputStreamで処理し、Byte []に変換してフロントエンドに返しますが、Actionscriptの値はnull値になります。
public Byte[] sayHello() {
Byte[] ba = null;
try {
FileInputStream fis = new FileInputStream(
"D:/e/Ryan Adams - I Wish You Were Here.mp3");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = fis.read(buffer)) > 0) {
baos.write(buffer, 0, bytesRead);
}
byte[] byteArray = baos.toByteArray();
ba = new Byte[byteArray.length];
for (int i = 0; i < byteArray.length; i++) {
ba[i] = Byte.valueOf(byteArray[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ba;
}
ActionScriptコード:
<s:RemoteObject id="ro" destination="helloWorldService" fault="handleFault(event)">
<s:channelSet>
<s:ChannelSet>
<s:AMFChannel uri="/flexspring/messagebroker/amf"/>
</s:ChannelSet>
</s:channelSet>
</s:RemoteObject>
...
private function loaded():void {
var bArr:ByteArray = ro.sayHello() as ByteArray;
l.text = "" + (bArr == null);
}
...
<s:Label id="l" text=""/>
そして、それは "真" と言います。誰が何が問題なのか考えている人はいますか?
本当に役に立ちました。今は音がうまくいきます。私は最後の質問、2つ以上の音を一つずつ再生する方法について質問します。 – neorc
新しい質問を投稿する必要があります。私は決してFlashでサウンドを再生しようとはしませんでした。最も役立つ答えを受け入れてください(その隣の空のチェックマークをクリックしてください)。 – debracey