Flex2 SDKでFlashファイル生成

AdobeからFlex2 SDKというFlashのファイル(swf)をコンパイルするコンパイラが無料で提供されています。
http://www.adobe.com/jp/products/flex/sdk/

インストール方法などは下記のサイトを参照。
http://www.thinkit.co.jp/cert/article/0611/11/2/2.htm
http://www.saturn.dti.ne.jp/~npaka/flash/as30/

FlexにはFlex2 SDK(無償)とFles Builder2(有償)の2つがあり、Builderの方は、30日体験版があるのですが、購入すると6万程度かかる(それでも昔に比べれば安いとは思うのですが)。

無料のコンパイラがあって、仕様が公開されているなら、Builder無くてもなんとかなるんじゃないかと思い、とりあえずFlex2 SDKのみで色々と暇を見つけていじっていこうと思います。

Adobeからは日本語の仕様書が公開されているので、これを見ながら今日ちょっといじってみました。仕様書はかなりボリュームがあるので、ざっと眺めて面白そうな箇所だけピックアップして、あとはそれを改良していくという方法で進めました。Javaに近いので理解しやすいです。
http://download.macromedia.com/pub/documentation/jp/flex/2/prog_actionscript30.pdf
http://download.macromedia.com/pub/documentation/jp/flex/2/flex2_devguide.pdf

アプリでとりあえず押さえたいところは、ユーザインターフェースと、イベント処理、イベントが呼び出す処理ぐらいだと思うので、まずはここらを中心に、mp3を再生して停止するというスクリプトまで実装してみました。

とりあえずユーザインターフェースは、mxmlという仕様で記載しました。これにより、ボタンやテキストエリアの配置が簡単に行えます。そしてこのmxmlの中で、ボタンが押された時のイベント処理と、そこから呼び出されるActionScriptの関数を定義。イベント処理から呼ばれる関数は、ActionScript3で記述しました。
今回は、mxmlファイルの中にまとめてActionScriptを記述しました。

ということで、サンプルファイルは以下に。実行する場合は、UTF8で保存してください。

<?xml version="1.0" encoding="utf-8"?>


<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="300" >

<!-- 下記のScriptタグの中にサウンド再生、停止のActionScript3を記載 -->
<mx:Script>

<![CDATA[

//下記が実際のActionScript
  //必要なパッケージのインポート
    import flash.text.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;


	//サウンドの再生・停止関数で利用する変数
	private var BGMSound:Sound;
	private var soundChannel:SoundChannel;


	//サウンド再生関数(引数はテキストエリアで与えられた、mp3ファイル名の文字列)
	private function soundstart(mp3file:String):void {

	    //URLRequestクラスにファイル名をセット(これにより、ローカルでもインターネット上のmp3ファイルでも再生が可能となる)
            var urlrequest:URLRequest = new URLRequest(mp3file);
	    
	    //サウンドクラスを呼び出し
	    BGMSound = new Sound();
	    
	    //サウンドクラスのloadメソッドを呼び出し、引数にURLRequestの値をセット
	    BGMSound.load(urlrequest);

	    //playメソッドを呼び出し、返り値をSoundChannel型の変数にセット
	    //SoundChannelクラスにしないとサウンドの停止メソッドstopが使えないため。
	    soundChannel = BGMSound.play();


	}

	//サウンドの停止関数
	private function soundstop():void {

		//再生時にセットされたsoundChannelの変数を利用して、stopメソッドを呼び出し
		soundChannel.stop();

	}

]]>
</mx:Script>

<!-- 下記は、ユーザインターフェースとイベントの処理 -->

<!-- ベースとなるパネルの表示。 -->
<mx:Panel title="My Application" width="250">


<!-- テキストエリアの表示。デフォルトでテキストエリアに表示する文字はtext=に記述 -->
<mx:TextInput id="myInput" width="150" text="mp3 sound player"/>

<!-- 再生ボタンの定義。labelの値が実際のボタン上に表示される文字列
click=がボタンがクリックされたイベントの定義で、その値の欄に呼び出す上記ActionScriptの再生関数を記載。
再生関数の引数に、テキストエリアの文字列をセット。 -->
<mx:Button id="startButton" label="Start" click="soundstart(myInput.text);"/>

<!-- 停止ボタンの定義。クリックされた時に、上記ActionScriptの停止関数を呼び出し -->
<mx:Button id="stopButton" label="stop" click="soundstop();"/>


</mx:Panel>
</mx:Application>


下記のようにコンパイルして、実行するとswfファイルが出来ますので、それをダブルクリックするとFlash Playerが立ち上がります。

 mxmlc Soundtest.mxml

デフォルトで"mp3 sound player"と記載されているテキストエリアに、適当なローカルPCにあるmp3ファイル名を記載します(swfと同一ディレクトリに無いmp3は、相対もしくは絶対パスで記載)。そしてstartボタンを押すとそのmp3ファイルが再生されます。
stopボタンを押すと停止します。

サンプルファイルでは、ファイル名はURLRequestクラスにセットしているため、テキストエリアに、http://から始まるmp3ファイルのURLを記述しても再生されます(便利!)。
とりあえずmf247musicの無料mp3ファイルのURLは下記のものなどあるので、ためしに入れてみると、それが再生されるのが分かります。

http://download.mf247.jp/dl.php?m=0031515004

これだけで簡単に音楽を鳴らせるってすばらしい。音が出たり絵が出たりするプログラミングはやってて楽しいのでおすすめ。
次はビデオの再生でもやろうかな。