三田倶楽部の日々

六本木の片隅で猫と踊った5人+αの記録
<< AXE WAKE-UP SERVICE | main | 春はまだか。 >>
posted by スポンサードリンク
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | -
posted by たつろう
Flex3とBlazeDSでmp3プレーヤ(簡単な実験)
たつろうです。

今日は、ウノウさん主催の「サタデー・コード・フィーバー」に行って、先日来ちょこちょこ言及していました音楽サーバの超簡単な実装をしてみた件についてエントリします。

今回作成した簡易mp3プレーヤは、ブラウザ側のFlashアプリケーションから、サーバ側のJavaオブジェクトのメソッドを呼ぶという感じの仕掛けで動かしています。

画面サンプルは↓
Flex3とBlazeDSで作るmp3プレーヤ(簡易版)

BlazeDSのセットアップその他については省きますので、FlexUGのサイトを見たりして対応してください。
以降で簡単な解説をば。
・ブラウザ側の件
こちらは例によってFlexBuilderを使って書いてます↓
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var titles:Array = new Array("CV01_01_ballade", "SING&SMILE FULL ver. -less vocal-", "WAY -less vocal-", "メルト", "晴れときどきにわか雨 -less vocal-");
]]>
</mx:Script>
<mx:RemoteObject id="player" destination="player" />
<mx:Panel x="10" y="10" width="400" height="338" layout="absolute" title="FlexとBlazdeDSによるmp3プレーヤ">
<mx:List id="musicList" dataProvider="{this.titles}" x="10" y="10" height="249" width="360"/>
<mx:Button label="PlaySound" click="{player.play(musicList.selectedItem)}" x="10" y="267"/>
<mx:Label x="104" y="269" text="選択した曲 : "/>
<mx:Label x="167" y="269" text="{this.musicList.selectedItem}"/>
</mx:Panel>
</mx:Application>
ここいらへんはさくっと作るとして、問題は「player」というやつです。
mx:RemoteObjectタグで、リモートオブジェクトとローカルの対応定義を書いています。
そのインスタンスである「player」が、リモートのJavaオブジェクトと対応しています。

・サーバ側の件
では、どのようにリモートのJavaオブジェクトと、Flexアプリケーションを対応づけるかというと、リモーティングするための設定ファイルである「remoting-config.xml」に、Flexから呼び出したいJavaオブジェクトに関する情報を記述しておきます↓(抜粋)
<!-- サーバ側オブジェクトの宛先 -->
<destination id="player">
<properties>
<source>jp.mitaclub.jukebox.PlayObj</source>
</properties>
</destination>
という感じでXMLに記述すると、BlazeDS側で対応付けを行なってくれるので、リモートオブジェクトのメソッドを呼び出せるというわけです。
ここまでできれば、クライアント側からリモートのメソッドを直接呼び出せるので、リモート側に↓
public void play(String title) throws FileNotFoundException, JavaLayerException {

FileInputStream fs = new FileInputStream(filePath + title + ".mp3");
AudioDevice device = FactoryRegistry.systemRegistry().createAudioDevice();

Player player = new Player(fs,device);

player.play();
}

という感じのメソッド(上記のメソッドは超いい加減です。良い子は真似しないでください。)を準備しておけば、MXMLに記述したようなやり方「click="{player.play(musicList.selectedItem)}"」で呼び出せてしまうのです。


・今後に向けて
FlexとリモートのJavaオブジェクト連携方法については今回確認しました、あとは

a. リモートオブジェクトからの返り値の受け渡し等、Flex⇔BlazeDS⇔Java連携についての詳細
b. mp3再生に使っているJLayerの利用方法の詳細
c. プレーヤのデザイン(Flexのレディメードだと「再生ボタン」みたいなのがない。)

という課題が残っているかなと。
この辺を早々にクリアにして、音楽プレーヤの設計〜実装を進めて行きたいです。
(個人的野望では、さらにAdobe AIRと連携して、音楽データのアップロードや削除等の管理が出来れば最高かなと夢見ています)

では。
| たつろう | Flex & AIR | 18:10 | comments(1) | trackbacks(0) | -
posted by スポンサードリンク
スポンサーサイト
| スポンサードリンク | - | 18:10 | - | - | -
早速自宅のサーバに移して実験したところ、ウマくいきました。
この調子で機能拡張して、実際に使えるものにして行きたいと思います。
| たつろう | 2008/02/17 1:17 PM |










http://mitaclub.jugem.jp/trackback/115
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
END jugem_ad -->

このページの先頭へ