インターフェースを作る

インターフェースを作る

 それでは、いよいよこのインターフェース(図3)にActionScriptを実装します。実際のコードはこちらsimpleRadio.flaの1フレーム目に書かれていますので、こちらからファイル一式をダウンロード(http://www.thinkit.co.jp/images/article/85/2/8521.zip)して、そちらを参照してください(8521.zip/502 KB)。ここでは、特徴的なコードのみを解説します。それでは今回作成するsimpleRadio.flaのActionScriptを解説しましょう。

ループ再生のためのコード解説

 まず、最初にこのActionScriptで使用する変数の定義をします。リスト1は、前のページで説明した、サウンド関連を扱うために使うものたちです。

 次に読み込む曲を配列で用意します。この配列の中には読み込むファイルのパスが書いてあります。これを順番に読み込んで再生するわけです。そして、次回で行うRuby on Railsとの連携ではこの部分を動的に書き換えることになります。

var songs:Array = ["mp3/song1.mp3","mp3/song2.mp3"];

 曲順を管理するための変数です。再生が終わるたびにこの番号を上げていって、新しい曲を再生するようにしています。

var songNum:Number = 0;

 以上で曲を連続再生させるための変数定義は完了です。次は、それを再生するメソッドと連続再生するためのメソッドについて解説します。

 playSong();は曲を再生するメソッドです。基本的には上で定義した変数に実際の値をセットして、それらをインスタンス化しています。下の3行で曲は再生します。配列の中から任意の曲をとってきて、そこからサウンドを作ります。そして、それを再生させて、戻り値(SoundChannel)を変数scにセットしてます。なぜこんなことをするかというと、曲を再生した後のコントロールはSoundChannelで行うためです。

soundURL = new URLRequest(songs[songNum]);
s = new Sound(soundURL);
sc = s.play();

 曲の再生が終わったら、次の曲を再生するためにイベントリスナーを設定します。これはActionScript 3.0から加わったメソッドなのですが、非常に便利ですね。曲の終わりを感知してくれて、終わり次第曲順を上げるためのメソッドに飛ぶように書きます。これはSoundのインスタンスをリッスンするのではなく、SoundChanelのインスタンスをリッスンするので注意してください。

sc.addEventListener(Event.SOUND_COMPLETE, nextSong);

 nextSong()メソッドは曲順を上げるメソッドです。曲数(配列の中身の個数)を取得して、それ以内でループするように条件分岐しています。変数SongNumberのカウントを上げて、playSong()メソッドで、次の曲に飛ばしています(リスト2)。

 以上が基本的な音楽の連続再生についての紹介になります。

 今回は音楽を連続再生するところまではできました。次回は、これをインタラクティブに操作するためのインターフェースを実装します。「停止ボタン」「再生ボタン」を切り替えて使用できるトグルボタンの作り方や、XMLの読み込み方法、再生時間の取得方法などを解説します。けっこう本格的なラジオが完成するので、お楽しみに!

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30